我从coreData开始,我有一个疑问。
我有一个从服务器读取数据的应用程序,我解析数据,并获取对象的NSDictionary。
要将数据保存到coreData,我会执行以下操作:
for (NSDictionary *activityData in arrayWithResult){
[CompanyActivity createActivityWithInfoFromServer:activityData inManagedObjectContext:self.managedObjectContext];
}
if (![self.managedObjectContext save:&error])
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
这可以读取大约300条记录。方法'createActivityWithInfoFromServer:'检查是否有任何具有该名称的记录。如果是这样,更新数据,如果没有,则创建一个。
问题在于,当“for”循环正在运行时,如果我与用户界面交互,它会停止保存核心数据,有时并非总是如此。为什么呢?
如果我在循环中进行SAVE,问题就会消失。
我该怎么办?
全心全意,
RL
答案 0 :(得分:0)
根据您仍然允许用户与UI进行交互的原因,您可以禁用此时的UI,也可以创建一个处理您发布的代码段的新线程。
至于为什么它有时无法保存的原因,我认为有时它不需要创建尽可能多的新对象并且更快完成,并且可以在与UI交互之前保存。如果你在for循环中保存,那么在查看效率相当低的每个项目之后保存所有内容。