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]; 

以前的答案都是正确的,但请注意, applicationDidEnterBackgroundapplicationWillTerminate都不能保证在所有情况下被调用。 无论什么时候改变,您通常都会更好地存储重要数据。

保存NSUserDefaults在

 - (void)applicationWillTerminate:(UIApplication *)application 

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

 applicationWillTerminate 

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