IOS:用NSUserDefault存储一个数组
我想存储一个数组NSUserDefault
,然后,我把applicationDidEnterBackground
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
并在application didFinishLaunchingWithOption
myArray= [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"]];
多任务设备可以,但是对于非多任务设备,我该如何解决?
将对象NSUserDefaults
在-applicationWillTerminate:
中的NSUserDefaults
中,如果尚未通过调用-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
都不能保证在所有情况下被调用。 无论什么时候改变,您通常都会更好地存储重要数据。
保存NSUserDefaults在
- (void)applicationWillTerminate:(UIApplication *)application
组
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
在
applicationWillTerminate
并且不要忘记在您要保存的对象内部使用encodeWithCoder和initWithCoder,并将其包含在数组中