我想用NSUserDefault
存储一个数组,然后,我放入applicationDidEnterBackground
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
和application didFinishLaunchingWithOption
myArray= [[NSMutableArray alloc]
initWithArray:[[NSUserDefaults standardUserDefaults]
objectForKey:@"myArray"]];
对于多任务设备是可以的,但是对于非多任务设备,我该如何解决?
将NSUserDefaults
中的对象存储在-applicationWillTerminate:
中,如果它还没有被-applicationDidEnterBackground:
的调用保存(即检查是否支持多任务处理,如果是,那么不要保存它,因为它已经被保存了)
- (void) applicationWillTerminate:(UIApplication *) app {
if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] &&
![[UIDevice currentDevice] isMultitaskingSupported]) {
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
}
}
不要忘记在进入后台之前同步缓冲区:
[[NSUserDefaults standardUserDefaults] synchronize];
前面的答案都是正确的,但请注意,不能保证在所有情况下都调用applicationDidEnterBackground
和applicationWillTerminate
。当重要数据发生变化时,最好将其存储起来。
Save NSUserDefaults at
- (void)applicationWillTerminate:(UIApplication *)application
set
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
applicationWillTerminate
不要忘记在你要保存的对象中使用encodeWithCoder和initWithCoder数组