iOS10、NSUserDefaults不起作用
iOS 10, NSUserDefaults Does Not Work
我尝试 write/read 值 to/from [NSUserDefaults standardUserDefaults]
,但它似乎不起作用。我的代码是:
[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;
此代码 returns nil
,适用于 Xcode 8.0 beta 和 iPhone 6s (10.0) 模拟器。
但是它 returns sampleString
对于 Xcode 8.0 beta 和 iPhone 6s (9.1) 模拟器
我正在使用新系统测试我的应用程序。难道我做错了什么?或者有解决方法吗?或者这只是一个 "beta" 问题?
我刚遇到同样的问题。当首先 运行 iOS8 或 9 模拟器然后 iOS10 模拟器时,NSUserDefaults
似乎有问题。
重新启动 mac 为我解决了这个问题。
这是 Xcode 8 Beta 1 附带的 iOS 模拟器的错误。它已在 Beta 2 中修复:
Resolved in Xcode 8 beta 2 – IDE
Simulator
- NSUserDefaults function correctly in the iOS 10 Simulator, regardless of whether you have
previously booted the iOS 8 or iOS 9 Simulator. (25974372)
更新到 Xcode 8 Beta 2 以避免每次都必须重新启动主机 Mac。
我刚刚遇到了同样的问题。当首先 运行 iOS8 或 9 模拟器然后 iOS10 模拟器时,NSUserDefaults 似乎有问题。重新启动 mac 为我解决了这个问题。
共享编辑标志
确认的。关闭并重新打开模拟器不起作用,但重新启动为我修复了它。
根据 Apple (apple link ) WWDC 种子:运行 多个 iOS 模拟器可能导致 NSUserDefaults 无法工作 运行 iOS 8 或 9模拟器后跟 iOS 10 模拟器将导致 NSUserDefaults 在模拟器中停止工作。这可以通过重新启动主机来解决 Mac.
更新:
如果启用了数据保护,synchronize
应用程序进入后台时也可能会失败。
我们在 真实设备 运行 iOS 10.1.1 上遇到了这个问题。可以读取旧值,但无法将新更改保存到磁盘,synchronize
方法总是失败。
重启设备可能会解决这个问题。
我尝试 write/read 值 to/from [NSUserDefaults standardUserDefaults]
,但它似乎不起作用。我的代码是:
[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;
此代码 returns nil
,适用于 Xcode 8.0 beta 和 iPhone 6s (10.0) 模拟器。
但是它 returns sampleString
对于 Xcode 8.0 beta 和 iPhone 6s (9.1) 模拟器
我正在使用新系统测试我的应用程序。难道我做错了什么?或者有解决方法吗?或者这只是一个 "beta" 问题?
我刚遇到同样的问题。当首先 运行 iOS8 或 9 模拟器然后 iOS10 模拟器时,NSUserDefaults
似乎有问题。
重新启动 mac 为我解决了这个问题。
这是 Xcode 8 Beta 1 附带的 iOS 模拟器的错误。它已在 Beta 2 中修复:
Resolved in Xcode 8 beta 2 – IDE
Simulator
- NSUserDefaults function correctly in the iOS 10 Simulator, regardless of whether you have previously booted the iOS 8 or iOS 9 Simulator. (25974372)
更新到 Xcode 8 Beta 2 以避免每次都必须重新启动主机 Mac。
我刚刚遇到了同样的问题。当首先 运行 iOS8 或 9 模拟器然后 iOS10 模拟器时,NSUserDefaults 似乎有问题。重新启动 mac 为我解决了这个问题。 共享编辑标志 确认的。关闭并重新打开模拟器不起作用,但重新启动为我修复了它。
根据 Apple (apple link ) WWDC 种子:运行 多个 iOS 模拟器可能导致 NSUserDefaults 无法工作 运行 iOS 8 或 9模拟器后跟 iOS 10 模拟器将导致 NSUserDefaults 在模拟器中停止工作。这可以通过重新启动主机来解决 Mac.
更新:
如果启用了数据保护,synchronize
应用程序进入后台时也可能会失败。
我们在 真实设备 运行 iOS 10.1.1 上遇到了这个问题。可以读取旧值,但无法将新更改保存到磁盘,synchronize
方法总是失败。
重启设备可能会解决这个问题。