我有一個cartArray(在上面的AppDelegate.h @界面中),當應用程序在後臺模式或應用程序關閉時需要保存。當我添加一個項目(Cart)進入後臺或者通過按減號關閉應用程序時,cartArray什麼也沒有,但應用程序工作正常。我的cartArray包含購物車類。 我可以知道發生了什麼嗎?在線教程非常複雜,我總是發現自己在解釋過程中迷失了方向。IOS:當應用程序關閉或進入背景時保存數組
[AppDelegate.m]
- (void)applicationDidEnterBackground:(UIApplication *)application {
[AppDelegate saveData];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[AppDelegate getData];
}
+(NSString *) getPathToAchieve{ NSLog(@"+++++getPathToAchieve");
static NSString* docsDir = nil;
if (docsDir == nil) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [paths objectAtIndex:0];
}
NSString *fullFileName = [NSString stringWithFormat:@"%@.plist", docsDir];
return fullFileName;
}
- (void)applicationWillTerminate:(NSNotification *)notification{
[cartArray writeToFile:[AppDelegate getPathToAchieve] atomically:YES];
}
-(id)initWithCoder:(NSCoder *)aDecoder
{ self = [super init];
if (self != nil)
{
cartArray = [aDecoder decodeObjectForKey:@"cartArrayKeys"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)anEncoder
{
[anEncoder encodeObject:cartArray forKey:@"cartArrayKeys"];
}
+(void)saveData{
[NSKeyedArchiver archiveRootObject:cartArray toFile:[self getPathToAchieve] ];
}
+(id)getData{
return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getPathToAchieve]];
}
你可以添加崩潰日誌到你的問題? – Amar
看起來很糟糕的設計。我建議你在這種情況下使用CoreData。你不必擔心數據是否被保存--CoreData會很好的照顧它。 – deleteme
'CoreData'不需要,只有一個數組。首選'NSDefaults' –