CoreData - 怀疑何时保存

时间:2011-08-16 21:22:04

标签: core-data nsmanagedobjectcontext

我从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

1 个答案:

答案 0 :(得分:0)

根据您仍然允许用户与UI进行交互的原因,您可以禁用此时的UI,也可以创建一个处理您发布的代码段的新线程。

至于为什么它有时无法保存的原因,我认为有时它不需要创建尽可能多的新对象并且更快完成,并且可以在与UI交互之前保存。如果你在for循环中保存,那么在查看效率相当低的每个项目之后保存所有内容。