iOS 10,NSUserDefaults不起作用

我尝试写/读取/从[NSUserDefaults standardUserDefaults] ,但它似乎不工作。 我的代码是:

 [[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"]; return defaultsValue; 

此代码返回nil ,为Xcode 8.0testing版和iPhone 6s(10.0)模拟器。 但是,它返回的Xcode 8.0testing版和iPhone 6s(9.1)模拟器的sampleString

我正在用新系统testing我的应用程序。 难道我做错了什么? 或者有没有解决方法? 还是只是一个“testing”问题?

我只是有同样的问题。 第一次运行iOS8或9模拟器,然后运行iOS10模拟器时, NSUserDefaults似乎有问题。 重新启动mac解决了我的问题。

这是Xcode 8 Beta 1附带的iOS模拟器的一个错误。它已经在Beta 2中修复:

解决了Xcode 8 beta 2 – IDE

模拟器

  • NSUserDefaults在iOS 10模拟器中正常运行,无论您是否曾经引导过iOS 8或iOS 9模拟器。 (25974372)

Xcode 8 Beta 2发行说明

更新到Xcode 8 Beta 2,以避免每次重新启动主机Mac。

更新:

如果启用了数据保护,则当应用程序进入后台时synchronize也可能失败。


我们在运行iOS 10.1.1的真实设备上有这个问题。 旧的值可以被读取,但新的更改不能保存到磁盘, synchronize方法总是失败。

重启设备可能会解决这个问题。

我只是有同样的问题。 第一次运行iOS8或9模拟器,然后运行iOS10模拟器时,NSUserDefaults似乎有问题。 重新启动mac解决了我的问题。 shareeditflag确认。 closures并重新打开模拟器不起作用,但重新启动修复了我。

根据苹果( 苹果链接 )WWDC种子:运行多个iOS模拟器可能导致NSUserDefaults无法正常运行运行iOS 8或9模拟器,然后是iOS 10模拟器将导致NSUserDefaults在模拟器中停止工作。 这可以通过重新启动Mac主机来解决。