相关疑难解决方法(0)

iOS 10,NSUserDefaults不起作用

我尝试写入/读取值[NSUserDefaults standardUserDefaults],但似乎不起作用.我的代码是:

[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;
Run Code Online (Sandbox Code Playgroud)

nil对于Xcode 8.0 beta和iPhone 6s(10.0)模拟器,此代码返回.然而,它返回sampleStringXcode 8.0 beta和iPhone 6s(9.1)模拟器

我正在用新系统测试我的应用程序.难道我做错了什么?或者有解决方法吗?或者它只是一个"测试版"问题?

objective-c nsuserdefaults ios ios10 xcode8

18
推荐指数
2
解决办法
7763
查看次数

NSUserDefaults objectForKey有时为零

我刚刚注意到,我的一个键**NSUserDefaults** 经常会返回nil.似乎大约一半的时间是正确的,另一半则不是.我说有一半的时间,但我不是说它的翻转,只有40-50%,我觉得它不起作用.当我写初始值时,我立即调用同步.我使用此密钥作为新用户注册时设置的应用程序修订版.

以下代码返回nil:

#define kDBrevision  @"revision"

NSString *rev = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序并只监视值(不写任何NSUserDefaults)时,该值有时是有效的,根本不会修改NSUserDefaults.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSString *r = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
    NSLog(@"revision %@", r);
    _exit(1);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.我在连接到Xcode 8.2.1的设备上运行iOS 10.有人有主意吗?谢谢

编辑:我开始与苹果谈论修复这个问题,并发现如果你已经完成了文件保护,那可能是这个问题不时出现的原因,不过苹果告诉我我的具体情况(这是我此时只能确定一个)是一个错误.这种情况是当你使用Xcode在设备上启动应用程序时,它应该不会像这样失败,偶尔也会失败.不知道何时或是否将被修复.相反,我将我的关键字符串从默认值转移到了钥匙串.

nsuserdefaults ios

5
推荐指数
1
解决办法
2562
查看次数

标签 统计

ios ×2

nsuserdefaults ×2

ios10 ×1

objective-c ×1

xcode8 ×1