当我按下一个单元格时,会弹出一个带提示符的AlertView。我的问题:我想在提示符下显示输入的文本到选定的单元格。 (同时将文本保存到Core Data)。任何人都可以把我推向正确的方向吗?
答案 0 :(得分:0)
如果您希望在显示警报的同时进行保存,则需要在后台线程中进行保存。
最简单的方法是使用嵌套的上下文,只需从主上下文中保存。
无论您在何处创建托管对象上下文,请将alloc / init部分替换为...
NSManagedObjectContext *parentMoc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
parentMoc.persistentStoreCoordinator = persistentStoreCoordinator;
self.managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
self.managedObjectContext.parentContext = parenetMoc;
现在,您拥有之前使用的相同MOC,除了它是主队列MOC,父背景在后台队列中运行。
您必须使用方法来保存两个上下文。在父级上的第二次保存发生在后台线程中,因此您不必等待。
- (void)saveData {
NSError *error = nil;
NSManagedObjectContext *moc = self.managedObjectContext;
if ([moc save:&error]) {
moc = moc.parentContext;
[moc performBlock:^{
NSError *error = nil;
if (![moc save:&error]) {
// Handle the actual save error
}
}];
} else {
// Handle the error of saving up into the parent context...
}
}
现在,不是直接调用[managedObjectContext save:& error],而是将其替换为saveData消息,该方法几乎立即返回,实际保存将在后台线程中进行。
您的应用中的其他任何代码(保存调用除外)都不应该更改。
在您的情况下,在您发出警报之前,请致电保存,并在显示警报时进行保存。