【发布时间】:2015-01-03 01:22:57
【问题描述】:
我无法将 (~250k) 单词(它们在数组中)作为对象保存到 Core Data 中。它需要永远。这就是我使用快速枚举所做的事情,一旦我用我所有的话创建了一个数组:
[self learnWord:word andSave:YES];
这会将每个单词保存为一个对象,但需要很长时间(约 30 分钟)。
所以我尝试只创建对象并在快速枚举循环完成后保存一次:
[self learnWord:word andSave:NO];
//Save our suggestions
[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait];
它的作用是检查一个值为“word”的对象是否与我们的词不匹配,并在这种情况下创建一个实体。然后我分配以下值:
wordSuggestion.word = word;
wordSuggestion.popularity = @1;
我尝试过禁用每个单词的 SAVE,而是在快速枚举循环完成后手动保存(这不起作用)。
有没有一种简单的方法可以非常快速地创建对象并在 30 分钟内保存它们?
【问题讨论】:
-
您是否尝试过在后台线程中通过
NSOperationQueue进行保存,并发操作数不错? -
感谢您回复@LouisTur,不太确定如何处理 NSOperationQueue,您可以链接到任何示例吗?我现在一定会查的。
-
哦,我有点偏离@KingPolygon。我将苹果的Core Data and Concurrency 指南添加为书签,但现在在指南的顶部它说 “自编写本文档以来,Core Data 并发的最佳实践发生了巨大变化;请注意,本章不代表当前的建议” 。所以在恐慌了一分钟后,我发现了这个:Core Data Tuts+。看起来他们有一些非常好的特定于 iOS8 的核心数据信息。我将不得不自己检查一下
-
谢谢@LouisTur!将def检查出来。欣赏!
-
我不使用 CoreData,因为我们的应用程序都需要加密,但是使用标准 SQLite,如果您希望在今年完成,您需要在写入一堆数据之前启动事务。
标签: ios objective-c core-data magicalrecord