首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MagicalRecord saveWithBlockAndWait

MagicalRecord saveWithBlockAndWait
EN

Stack Overflow用户
提问于 2014-01-03 19:03:36
回答 1查看 1K关注 0票数 0

对于在核心数据usihg中执行批量插入/更新/删除的iOS应用程序,usihg MagicalRecord:使用saveWithBlockAndWait将执行任何批保存以持久存储吗?根据苹果的建议,保存操作必须分批完成(比如将50或100条记录保存到磁盘),以避免内存增加。一定要打电话

代码语言:javascript
复制
[lcoalContext save:nil];

在saveWithBlockAndWait内部有一定的间隔吗?这里,lcoalContext是从saveWithBlockAndWait方法中获得的NSManagedObjectContext的一个实例。

EN

回答 1

Stack Overflow用户

发布于 2014-11-05 15:24:24

这是我对你的需求的建议:

  1. 为整个插入/更新/删除过程创建一个单独的NSManageObjectContext。
  2. 使用此上下文创建/更新/删除实体。(请记住,每个MR服务都有一个实现,您可以指定要执行的操作的上下文)。
  3. 您必须创建一个计数器来观察何时应该保存上下文。
  4. 定期调用给定上下文的保存。

我直接为你写了一个简短的例子:

代码语言:javascript
复制
- (void) batchProcessToCreate1000Objects{
    //This will create a separated context which is the child of the main context. You can use MR_newPrivateQueueContext instead of this if you would like to use a fully separated context (it won't merge the changes into the main context).
    NSManagedObjectContext* localContext = [NSManagedObjectContext MR_context];
    for (int counterToObservWhenToSave = 0; counterToObservWhenToSave < 1000; counterToObservWhenToSave++) {
        YourManagedObject* objectToInsert = [NSManagedObject MR_createEntityInContext:localContext];
        objectToInsert.name = @"Chris P. Backon";
        objectToInsert.isStackOverFlowExample = @YES;
        if (counterToObservWhenToSave > 0 && (counterToObservWhenToSave % 50 == 0)) {
            [localContext MR_saveToPersistentStoreAndWait];
        }
    }

}

还有,请注意:永远不要调用saveWithBlockAndWait函数中的save:。此函数将自动保存(如果您在块中做了任何CD更改)。

祝你编码好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20910902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档