IOS:用NSUserDefault存储一个数组



我想用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];

前面的答案都是正确的,但请注意,不能保证在所有情况下都调用applicationDidEnterBackgroundapplicationWillTerminate。当重要数据发生变化时,最好将其存储起来。

Save NSUserDefaults at

- (void)applicationWillTerminate:(UIApplication *)application 

set

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

applicationWillTerminate

不要忘记在你要保存的对象中使用encodeWithCoder和initWithCoder数组

最新更新