IOS:使用NSUserDefault存储一个数组

Cra*_*Dev 8 xcode objective-c nsuserdefaults nsarray ios

我想存储一个数组NSUserDefault,然后,我放入applicationDidEnterBackground

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
Run Code Online (Sandbox Code Playgroud)

并在 application didFinishLaunchingWithOption

myArray= [[NSMutableArray alloc] 
          initWithArray:[[NSUserDefaults standardUserDefaults] 
           objectForKey:@"myArray"]];
Run Code Online (Sandbox Code Playgroud)

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

Jac*_*kin 10

将对象存储在in NSUserDefaults-applicationWillTerminate:,如果它尚未通过调用保存-applicationDidEnterBackground:(即检查是否支持多任务处理,如果是,则不要保存它,因为它已经被保存了.)

- (void) applicationWillTerminate:(UIApplication *) app {
    if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] &&
       ![[UIDevice currentDevice] isMultitaskingSupported]) {
       [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
    }
}
Run Code Online (Sandbox Code Playgroud)


Vin*_*ent 7

在进入后台之前不要忘记同步缓冲区:

[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)