IOS:使用NSUserDefault存储一个数组

时间:2011-09-27 14:21:24

标签: ios objective-c xcode nsarray nsuserdefaults

我想用[{1}}存储一个数组,然后,我输入NSUserDefault

applicationDidEnterBackground

并在[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

application didFinishLaunchingWithOption

多任务设备可以,但对于非多任务设备,我该如何解决?

6 个答案:

答案 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)

之前的答案都是正确的,但请注意,保证在所有情况下都不会调用applicationDidEnterBackgroundapplicationWillTerminate。通常情况下,只要有重要数据发生变化,您就会更好。

答案 3 :(得分:0)

将NSUserDefaults保存在

- (void)applicationWillTerminate:(UIApplication *)application 

答案 4 :(得分:0)

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

applicationWillTerminate

答案 5 :(得分:0)

并且不要忘记在您尝试保存的对象中使用encodeWithCoder和initWithCoder并将其包含在数组中