我想用[{1}}存储一个数组,然后,我输入NSUserDefault
applicationDidEnterBackground
并在[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
application didFinishLaunchingWithOption
多任务设备可以,但对于非多任务设备,我该如何解决?
答案 0 :(得分:10)
将对象存储在NSUserDefaults
-applicationWillTerminate:
中,如果尚未通过调用-applicationDidEnterBackground:
保存它(即检查是否支持多任务,如果是,则不要保存它,因为它已经被保存了。)
- (void) applicationWillTerminate:(UIApplication *) app {
if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] &&
![[UIDevice currentDevice] isMultitaskingSupported]) {
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
}
}
答案 1 :(得分:7)
在进入后台之前不要忘记同步缓冲区:
[[NSUserDefaults standardUserDefaults] synchronize];
答案 2 :(得分:3)
之前的答案都是正确的,但请注意,保证在所有情况下都不会调用applicationDidEnterBackground
和applicationWillTerminate
。通常情况下,只要有重要数据发生变化,您就会更好。
答案 3 :(得分:0)
将NSUserDefaults保存在
- (void)applicationWillTerminate:(UIApplication *)application
答案 4 :(得分:0)
组
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
在
applicationWillTerminate
答案 5 :(得分:0)
并且不要忘记在您尝试保存的对象中使用encodeWithCoder和initWithCoder并将其包含在数组中