Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS操场中的默认设置_Ios_Swift_Xcode_Nsuserdefaults_Swift Playground - Fatal编程技术网

iOS操场中的默认设置

iOS操场中的默认设置,ios,swift,xcode,nsuserdefaults,swift-playground,Ios,Swift,Xcode,Nsuserdefaults,Swift Playground,iOS操场似乎存在一个奇怪的问题,NSUserDefaults总是返回nil而不是实际值 在iOS操场中,最后一行错误地返回nil import UIKit let defaults = NSUserDefaults.standardUserDefaults() defaults.setObject("This is a test", forKey: "name") let readString = defaults.objectForKey("name") 在OSX游乐场中,最后一行正确返

iOS操场似乎存在一个奇怪的问题,
NSUserDefaults
总是返回
nil
而不是实际值

在iOS操场中,最后一行错误地返回
nil

import UIKit

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("This is a test", forKey: "name")
let readString = defaults.objectForKey("name")
在OSX游乐场中,最后一行正确返回“这是一个测试”


知道为什么吗?Bug?

那不是真正的Bug。。。。。NSUserDefaults绑定到iOS沙盒环境。游乐场不在此环境中运行。因此,您将无法将文件写入磁盘。如果在通过模拟器或设备运行时在应用程序中运行此代码,则可以访问沙盒环境,并且NSUserDefaults将返回正确的引用。我确实看到我在操场上得到了一个适当的参考,并且可以设置和获取值,所以这里必须有其他的事情发生。我只是不相信这是测试这类功能的方法,因为它的本质

注意当我同步存储时会发生什么


该值变为零,这是因为没有可以持久化的内容。

代码在Xcode 6.4中正常工作,但在Xcode 7.0 beta(7A120f)中失败

  • 众所周知,beta有bug
  • 提交错误报告:

  • 值得一提的是,以下代码在iOS操场1.6.1版(Swift 4)中运行良好:

    <代码>导入基础 让defaults=UserDefaults.standard set(“这是一个测试”,forKey:“name”) 让readString=defaults.string(forKey:“name”) 打印(readString!) 印刷品:

    这是一个测试
    
    在iOS版的Xcode 9.2中,用户默认值甚至可以在游戏重新运行之间保存。这一点一开始让我很恼火,因为我希望每次停止后都会清除UserDefaults,就像以前一样。
    所以,有一个警告:用户默认值现在在重新运行之间保持不变,最好在搜索bug时记住这一点,可能会有副作用

    这对我在iOS操场上很有用:
    let readString=defaults.objectForKey(“name”)as?String
    。我已经更新了答案,以反映我在Xcode 6中看到的内容。出于好奇,您是否正在使用Xcode 7测试版?我真的不会依靠读/写/存储功能在操场环境中正常工作。游乐场环境是为了更独立的模块化代码而不是持久性代码。您运行的是什么版本的Xcode,这在Xcode 6.4中适用。这两个代码片段在6.4中也适用。看起来这在Xcode 7 GM seed中也失败了。但在Xcode 7.1.1中也是如此。但是,NSKeyedArchiver确实工作正常。我昨天尝试了这一点,它确实100%工作,没有任何问题。我今天运行完全相同的代码,但它不起作用。该值未设置,因此返回nil。有什么想法吗?
    import Cocoa
    
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject("This is a test", forKey: "name")
    let readString = defaults.objectForKey("name")