gpt4 book ai didi

ios - 魔法记录/核心数据 : Saving Many Objects (~250K) Without Performance/Time Troubles?

转载 作者:行者123 更新时间:2023-11-29 02:24:09 25 4
gpt4 key购买 nike

我无法将 (~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;

我尝试做的是禁用每个单词的保存,而是在快速枚举循环完成后手动保存(这不起作用)。

是否有一种简单的方法可以在 30 分钟内真正快速地创建对象并保存它们?

最佳答案

尝试将 25 万个项目加载到移动设备上的 Core Data 中可能不是最好的方法,您应该说明您尝试这样做的原因并考虑替代方案。

如果您确实采用这种方法,那么最好提前创建数据库并将其嵌入应用程序中。然后,如果需要,只在运行时应用增量更新。这样,加载时间就无关紧要了。

30 分钟的加载时间太疯狂了,而且您可能正在为每个添加的单词发出一个获取请求(这将是低效的)。相反,您应该将单词分组(比如 100 个,但您需要测试以找到一个好的值)。为每个批处理运行一个获取请求,然后创建并保存所需的增量。

一旦你有了这个,你就可以轻松地创建后台线程和关联的上下文,然后当你保存这些上下文时,你可以保存到父持久存储。在采用这种方法时,您应该确保源词列表不包含重复项)。

关于ios - 魔法记录/核心数据 : Saving Many Objects (~250K) Without Performance/Time Troubles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com