代码之家  ›  专栏  ›  技术社区  ›  jamone

核心数据iPhone在执行50k记录插入时,我应该多久调用一次[managedObjectContext save:&error]?

  •  4
  • jamone  · 技术社区  · 16 年前

    我将做一个从XML到核心数据的西方导入。我将添加大约5万个实体。我的问题是应该多久调用一次[managedObjectContext save:&错误]。每增加一个新实体,或每x个实体,或仅仅在50k导入结束时?

    我目前正在为每个实体调用它,并且只尝试每10公里执行一次,导入速度急剧提高,但在第一个30公里之后,它将崩溃:

    *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFSet: 0x13e760> was mutated while being enumerated.'
    

    在我花太多时间去诊断那里发生了什么之前,我想我应该检查一下,不调用每个实体上的save是否可以?

    调用save之前实体的#是否受这些实体正在使用的内存量的限制?

    1 回复  |  直到 16 年前
        1
  •  4
  •   Marcus S. Zarra    16 年前

    不要拯救每一个实体,那是浪费和低效的。甜点取决于您的数据,但绝对大于每个条目,小于50K:)

    至于您看到的错误,它与保存数据几乎没有关系。在对可变数组进行迭代时,您正在将对象移除或添加到可变数组中。这是不允许的,原因很明显。