这个让我很兴奋。在 applicationWillTerminate 中我做了两件事:将一些设置保存到应用程序设置 plist 文件中,并将任何更改的数据更新到 managedObjectContext 中引用的 SQLite 数据库。问题是它有时有效,有时无效。模拟器和设备上的相同问题。如果我在应用程序运行时点击主页按钮,我有时只能将数据存储在 plist 和 CoreData 存储中。似乎它既可以工作,也可以不工作,如果我切换执行顺序(saveState、managedObjectContext 或 managedObjectContext、saveState)没有区别。我无法弄清楚这怎么会发生。任何帮助是极大的赞赏。lq
AppDelegate.m
@synthesize rootViewController;
- (void)applicationWillTerminate:(UIApplication *)application {
[rootViewController saveState];
NSError *error;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// Handle error
abort(); // Fail
}
}
}
RootViewController.m
- (void)saveState {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:self.someInteger forKey:kSomeNumber];
[userDefaults setObject:self.someArray forKey:kSomeArray];
}