Спасибо. Однако ранее я читал, что вы не можете сохранить NSMutableArray в NSUserDefaults, поэтому я попытался преобразовать его в NSData и затем использовать его.
Вот мой файл ViewController.m:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self=[[calViewController alloc]init];
if (self!=nil) {
self.list=[aDecoder decodeObjectForKey:@"list"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:list forKey:@"list"];
}
А вот мой файл AppDelegate.m:
-(void) applicationDidFinishLaunching:(UIApplication *)application
{
NSLog(@"Application did finish launching");
defaults=[NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray=[defaults objectForKey:@"lastArray"];
if (dataRepresentingSavedArray!=nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
{
listAr = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
{
listAr = [[NSMutableArray alloc] init];
NSLog(@"listAr: %@",listAr);
}
}
}
-(void) applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:listAr] forKey:@"lastArray"];
}
Я никогда не использовал UserDefaults раньше, и я совершенно сбит с толку. Я прочитал все документы, но, похоже, я не совсем понял!
EDIT:
-(void) applicationDidFinishLaunching:(UIApplication *)application
{
NSLog(@"Application did finish launching");
defaults=[NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"lastArray"]) {
NSData *dataRepresentingSavedArray=[defaults objectForKey:@"lastArray"];
if (dataRepresentingSavedArray!=nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
listAr = [[NSMutableArray alloc] initWithArray:oldSavedArray];
}
}
else
{
listAr = [[NSMutableArray alloc] init];
NSLog(@"listAr: %@",listAr);
}
}