当我推送一个单元格时,会弹出一个带有提示的 AlertView。我的问题:我想将提示中输入的文本显示到选定的单元格中。(同时将文本保存到 Core Data)。谁能把我推向正确的方向?
问问题
68 次
1 回答
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 的消息,该方法将几乎立即返回,并且实际的保存将在后台线程中进行。
您的应用程序中的任何其他代码(除了保存调用)都不需要更改。
在您的情况下,就在您抛出警报之前,调用保存,并且在显示警报时会发生保存。
于 2012-08-06T22:02:00.003 回答