Swift - 核心数据种子班

时间:2015-07-24 13:02:05

标签: ios swift core-data

我正在关注创建一个大型类的当前教程,以处理用数据播种大型数据库。

http://www.andrewcbancroft.com/2015/02/25/using-swift-to-seed-a-core-data-database/

我的数据库使用JSON填充,但我想复制作者在上面的文章中使用的模式。

在文章中他提到这种做法违反了一次性责任。我知道类应该承担一个单一的责任,但是考虑到像我这样的情况,我需要在用户登录时播种相当大的数据集,还有另一种方法吗?

如果这引起了讨论,我很抱歉,这不是我的意图,我的问题是这种播种方式在生产中是否常见,或者如果不是,那么实施这种数据播种的最佳模式是什么。

1 个答案:

答案 0 :(得分:3)

我认为没有必要真正回答每个人如何在生产中导入数据,因为每个人都可以做不同的事情。

相反,我只想提及根据Apple的核心数据编程指南"导入数据的最有效方法是通过批量导入过程。这个过程在这里详述。

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html

据说我会将您的数据存储在一个JSON文件中,该文件存储在Web服务上,或者作为资源存储在应用程序包中,然后使用NSJsonSerialization类将其转换为您的代码可以推理的基础对象用。然后,我将使用上面指南中概述的主体来创建批量导入过程来为您的数据库设定种子。

几乎就是这样,Apple的例子很简单。我还要声明最好在后台线程上运行此过程,因为如果导入需要很长时间才能完成,操作系统可能会终止您的应用程序。

希望这有帮助!

*编辑*

以下是如何使用协议和泛型对任何类型的对象执行任务的示例。您可以使用此模式执行任何类型的操作,因此只需采用该概念并输入您的Core Data逻辑。

这仅仅是可以遵循的模式的一个示例,并且不应该被视为即插即用实现。它需要进行调整以支持Core Data批量导入和保存。但是,它确实显示了一种获取字典或字典数组并将它们解码为对象的方法。那么你对物体的处理完全取决于你。

$('form:first').reset();