这是一个会影响许多应用的问题,可以在Xcode 8 beta(8S128d)中找到.这是第一个测试版,虽然它没有标记为beta 1.
问题出在NSUserDefaults; 它不起作用.这是代码,可能会把它放进去application:didFinishLaunchingWithOptions:.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"hello world" forKey:@"TEST"];
[defaults synchronize];
NSString * oops = [[NSUserDefaults standardUserDefaults] valueForKey:@"TEST"];
NSLog(@"default = %@", oops);
Run Code Online (Sandbox Code Playgroud)
在XCode 7和更早版本中,此代码按预期工作:值为oops"hello world".
XCode中8,的值oops是nil.
那是非常重要的!
也许这和这个问题是同一个问题。但我尝试过的解决方案很少有不起作用的。
模拟器不会在 Xcode 版本 9.0 beta 6 (9M214v) 上保存用户默认值。我也有 Xcode 8(连同 9),但将其删除。
我正在使用的代码:
UserDefaults.standard.setValue("1234567", forKey: "phone")
if let phone = UserDefaults.standard.value(forKey: "phone") as? String{
//some code here
}
Run Code Online (Sandbox Code Playgroud)
另外我也尝试过:
UserDefaults.standard.set("1234567", forKey: "phone")
if let phone = UserDefaults.standard.object(forKey: "phone") as? String{
//some code here
}
Run Code Online (Sandbox Code Playgroud)