我有一个对象,我从核心数据加载数据。然后我用用户输入/选择修改对象。模型对象和核心数据
我的第一个虽然是来覆盖的属性setter方法:
-(void)setType:(NSString *)type {
NSLog(@"setType fired | newType: %@", type);
_type = type;
appDelegate *appDelegate = (appDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:DEFAULTS_DB];
NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects.count == 1) {
Defaults *defaults = [fetchedObjects objectAtIndex:0];
defaults.sceneType = type;
}
if (![context save:&error]) {
NSLog(@"Error in saving first run defaults | error: %@", error);
}
else {
NSLog(@"new type was saved to core data");
}
}
我的另一个想法是,以更新核心数据时applicationWillResignActive:
火灾(但该方法只得到了几秒钟的应用程序之前运行被冻结)以及用户何时注销。
该应用程序我创建一个用户会启动,成立了他想要什么,然后直到他再次使用它,所以我很担心我的应用程序,同时不活动的被杀害,并把它放下10-60min丢失数据。
是处理更新的好方法更新核心数据在setter方法或者是一个非常糟糕的主意(占用过多资源,太慢了)?