Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
NSUserDefaults standardUserDefaults已使用iOS 9.3.1停止工作_Ios_Xcode6_Nsuserdefaults_Ios9.3 - Fatal编程技术网

NSUserDefaults standardUserDefaults已使用iOS 9.3.1停止工作

NSUserDefaults standardUserDefaults已使用iOS 9.3.1停止工作,ios,xcode6,nsuserdefaults,ios9.3,Ios,Xcode6,Nsuserdefaults,Ios9.3,我正在我的应用程序中使用以下代码: if ([[NSUserDefaults standardUserDefaults] objectForKey:@"First_RUN"] == NULL) { [self tutorial:nil]; [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"First_RUN"]; [[NSUserDefaults standardUserDefaults] synch

我正在我的应用程序中使用以下代码:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"First_RUN"] == NULL) {
    [self tutorial:nil];
    [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"First_RUN"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
我使用这段代码来了解应用程序第一次运行的时间,如果是这种情况,我将展示一个教程。 升级到9.3.1后,我发现它停止工作,所以每次应用程序运行时都会出现教程。 试图对此进行调试,但[NSUserDefaults standardUserDefaults]似乎已停止工作

我正在为这个应用程序使用旧的Xcode(6.4)。任何以另一种方式使用[NSUserDefaults standardUserDefaults]的帮助或对此问题的解释都会有所帮助(我的许多应用程序中都有这种代码,现在都崩溃了)

我只是想说清楚。这段代码在iOS 9.3上运行得很好,但在iOS 9.3.1上运行得不好,我想有些东西被破坏或更改了


更新:我为此创建了一个测试项目(以隔离问题),看起来模拟器很好,但在9.3.1设备上运行,即使使用Xcode 7.3,也会产生同样的问题:

苹果建议注册默认值以获得可靠的默认状态

AppDelegate
中尽快插入(在
awakeFromNib
applicationWill/didfishLaunching中)

现在,在第一次运行时,键总是
NO
,您可以编写

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:@"First_RUN"] == NO) {
    [self tutorial:nil];
    [defaults setBool:YES forKey:@"First_RUN"];
}
使用布尔值或整数值,您可以始终使用
boolforky:
/
integerforky:
测试
NO/0
,而不是
NULL
nil

如果布尔/整数值与用户中的defaultName关联 默认情况下,返回该值。否则,不返回/0


显然,删除应用程序并重新安装解决了这个问题。我猜在从9.3升级到9.3.1时,NSUserDefaults出现了一些问题,是的,甚至在setInteger调用之后也出现了问题。不起作用。这个应用程序已经运行了多年,所以我认为有些地方出了问题。
synchronize
被高估了,不需要。;-)这似乎是一个iOS错误。在9.3.2中没有加载NSUserDefaults时,我仍然遇到问题。苹果开发者论坛上有一条关于它的线索:你用9.3.1试过吗?我的代码在9.3和所有以前的iOS版本上运行得非常完美。在didFinishLaunching中添加这一点没有帮助。@Idan我刚刚在模拟器中测试了代码,并在9.3.1的真实设备上进行了测试(但是使用了Xcode 7),效果很好。我的测试项目?这里不太好?您正在使用哪个版本?您的测试项目不包含任何自定义代码。我下载了它并添加了我建议的代码。很好用(Xcode 7.3-7D175)突然,它可以用(测试项目)但在我的应用程序上不起作用:(在我的情况下不起作用。已经删除了该应用程序(以及其他几个受似乎是iOS错误影响的应用程序),问题仍然存在。这里有一个正在进行的线程:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:@"First_RUN"] == NO) {
    [self tutorial:nil];
    [defaults setBool:YES forKey:@"First_RUN"];
}