将内存存储保存到iOS上的文件

时间:2014-07-29 12:25:33

标签: ios core-data in-memory-database

假设我已经使用以下方法设置了内存核心数据存储:

- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error;

并为它保存了很多东西。

现在我想将所有商店保存到文件中。

这可能吗?

我尝试了很多种搜索,但看起来之前没有人遇到过这个问题。

1 个答案:

答案 0 :(得分:1)

没有办法只将内存NSPersistentStore保存到文件中。它不符合NSCoding或提供自己的任何方法来实现这一点,并且询问其数据的唯一方法是获取它的通常的核心数据方法。

但是,您可以非常轻松地迁移到基于文件的商店。使用持久性存储协调器将基于内存的存储迁移到文件。 首先确保您没有任何仍然使用内存驻留存储的对象(NSManagedObjectContextNSManagedObject)。然后做一些事情:

NSURL *fileURL = // set this up to have the URL of the file you want
NSError *error = nil;
NSPersistentStore *fileStore = [self.persistentStoreCoordinator
    migratePersistentStore:self.memoryResidentStore
    toURL:fileURL
    options:nil
    withType:NSSQLiteStoreType
    error:&error];

执行此操作后,旧的持久性存储(上面代码中的self.memoryResidentStore)不再有用。