当一个人应该使用NSInMemoryStoreType?因为它只存储在内存中然后它如何对持久性有用?
答案 0 :(得分:4)
由于它会将数据保留在内存中,因此当您关闭应用时,数据肯定会丢失,并且无法恢复。
但是使用NSInMemoryType有一个优势,那就是速度。如果您要使用NSInMemoryType保存 100,000个数据,则需要 45秒来添加它们并使用CountResultType获取计数。
使用NSSQLiteStoreType这样做实际上需要超过3-4分钟,因此它似乎不是存储所有数据的最佳方式;除非必须使用post-application-relaunch持久性。
In Memory的一个很好的用例是一个应用程序,每当应用程序启动或关闭时,它的数据都会发生变化,并且存储超过1,000条记录。在这种情况下,将记录保存在内存中是明智的,因为与NSSQLiteStoreType相比,它的速度非常快。
另一方面,如果要存储的记录数量不多,则SQLite和InMemory之间不会有任何速度差异,使用NSSQLiteMemoryType存储记录将是更好的选择。
我比较了两者,结果如下:
答案 1 :(得分:0)
内存存储类型不会#34;持续存在"因为它没有写入文件。
我最近有一个很好的用例:应用程序读取复杂的XML文件并将其转换为Core Data对象图。代码非常易读,可以利用NSFetchedResultsController
等有用的对象。
使用Core Data SQLite存储的唯一真正可能的论据是允许更快的启动(不必读取XML文件),但这不是项目要求。
内存存储的参数是它比数据库支持的持久存储快得多。
答案 2 :(得分:0)
如果您已经拥有一个包含大量代码的CoreData数据库,您想要提取少量数据,并使用所有现有代码,这意味着您需要另一个CoreData数据库,这非常有用。您无需在文件系统中创建具有所有开销的新数据库,而只需在内存中创建它。