我正在尝试使用配置来管理核心数据中的瞬态实体。
- 首先,我创建了 2 个名为“Persistent”和“Transient”的 coredata 配置。
- 然后,我创建了实体,并将它们与正确的配置相关联,具体取决于实体是否可持久。
- 最后,使用persistentStoreCoordinator,我创建了一个Sqlite 类型的持久存储并将其链接到“Persistent”配置。我还创建了一个内存类型的持久存储并将其链接到“瞬态”配置。
测试:我启动iphone模拟器,我的应用程序启动成功。我关闭模拟器并在数据库文件上启动 sqlite3。我列出了表( .tables 命令),我可以看到已经为我的临时实体创建了一些表 => 所以,它不起作用。
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
NSLog(@"++++++++ persistentStoreCoordinator");
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *persistStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ProjectToDelete.sqlite"];
NSMutableDictionary *sqliteOptions = [NSMutableDictionary dictionary];
[sqliteOptions setObject:@"WAL" forKey:@"journal_mode"];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
sqliteOptions, NSSQLitePragmasOption,
nil];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Persistent" URL:persistStoreURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:@"Transient" URL:[NSURL URLWithString:@"memory://store"] options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}