假设我已经使用以下方法设置了内存核心数据存储:
- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error;
并为它保存了很多东西。
现在我想将所有商店保存到文件中。
这可能吗?
我尝试了很多种搜索,但看起来之前没有人遇到过这个问题。
答案 0 :(得分:1)
没有办法只将内存NSPersistentStore
保存到文件中。它不符合NSCoding
或提供自己的任何方法来实现这一点,并且询问其数据的唯一方法是获取它的通常的核心数据方法。
但是,您可以非常轻松地迁移到基于文件的商店。使用持久性存储协调器将基于内存的存储迁移到文件。 首先确保您没有任何仍然使用内存驻留存储的对象(NSManagedObjectContext
,NSManagedObject
)。然后做一些事情:
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
)不再有用。