尊敬的专家和朋友,
嗨,我一整天都在努力解决这个问题,但我尝试过的任何方法似乎都不起作用。基本上我想使用 NSDefault 保存一个字符串数组(最大:20,没有重量)。它保存,它加载正常,但当我通过按下减号按钮在真实设备上杀死应用程序时没有。我在 iPhone 4gs (iOS 6) 上对其进行了测试。
我试过
了,但是没有用。
[[NSUserDefaults standardUserDefaults] synchronize];
in both
applicationWillTerminate:(UIApplication *)application
and
applicationDidEnterBackground:(UIApplication *)application
注意:从 NSLog 中,只要我不在真实设备的后台杀死应用程序,我就可以从 NSDefault 中恢复值。
有谁知道为什么?提前谢谢了。请附样本。
========================= 编辑(添加代码):
我正在添加一些代码,希望它会更清晰,并且有人可以在这里真正帮助我。
提前致谢。一些动作,然后
self.count = [NSNumber numberWithInt:[self.count intValue] + 1];
count is a NSNumber
NSData *count = [NSKeyedArchiver archivedDataWithRootObject:self.count];
[[NSUserDefaults standardUserDefaults] setObject:count forKey:@"count"];
[[NSUserDefaults standardUserDefaults] synchronize];
arrayForSavedKey is a NSMutableArray
[[NSUserDefaults standardUserDefaults] synchronize];
NSData *array = [NSKeyedArchiver archivedDataWithRootObject:self.arrayForSavedKey];
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"arrayForSavedKeys"];
在两者中:
applicationWillResignActive:(UIApplication *)application
applicationWillEnterBackground:(UIApplication *)application
我尝试添加以下行 [[NSUserDefaults standardUserDefaults] synchronize]; 为了检索数据,我让委托调用类 A 中的方法,方法是调用: loadSavedData 并像这样取消归档:
NSData *savedKeys = [[NSUserDefaults standardUserDefaults] objectForKey:@"arrayForSavedKeys"];<br>
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:savedKeys]];<br>
self.arrayForSavedKey = [[NSMutableArray alloc] initWithArray: array];<br>
(里面只有几个 NSStrings)
我在其中 NSLOG 输出并且一切都很好,只要我没有通过减号杀死应用程序。(但是对于真实的设备,我当然无法从 NSLog 中看到任何内容,因为一旦我杀死了应用程序,应用程序也会在 xCode 中停止运行)
我今天已经度过了一整天,我正在竭尽全力。请帮忙。