addPersistentStoreWithType返回null(iOS,CoreData,iCloud)

时间:2016-10-18 06:54:27

标签: ios core-data icloud

我正在使用CoreData中的这个UIManagedDocument。 。

NSURL *localUrl = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
localUrl = [localUrl URLByAppendingPathComponent:@"Default Notes Database"];
//self.noteDatabase = [[UIManagedDocument alloc] initWithFileURL:localUrl]

现在我正在尝试在尝试在iCloud中保存Core Data的过程中创建NSPersistentStore实例。但每当我尝试使用我的数据模型和url创建NSPersistentStore时,NSPersistentStore总是为零。

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Notes" withExtension:@"momd"];
NSPersistentStoreCoordinator *migrationPSC = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]];

// Open the store
id sourceStore = [migrationPSC addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:iCloudUrl options:@{ NSPersistentStoreUbiquitousContentNameKey: @"InhoNotesiCloudStore",NSSQLitePragmasOption: @{@"journal_mode":@"DELETE"},NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES } error:nil];

SourceStore没有!为什么这是零?我搜索了答案,但没有在网上找到任何答案。

1 个答案:

答案 0 :(得分:0)

问题是存储文件的路径错误 - 我发现使用模拟器应用程序文件进行调试。如果使用或不使用.sqlite扩展名创建CoreData,则存储文件最终位于应用程序文档文件夹中的不同位置。在我的情况下,我没有.sqlite扩展名,这意味着我的商店文件位于Documents / Default Notes Database / storeContents / persistentStore而不是Documents / Default Notes Database.sqlite