Core data 未在UIManagedDocument上创建NSPersistentStoreCoordinator

Core data 未在UIManagedDocument上创建NSPersistentStoreCoordinator,core-data,icloud,uimanageddocument,nspersistentstore,Core Data,Icloud,Uimanageddocument,Nspersistentstore,我开始学习UIManagedDocument及其功能。据我所知,它是一种存储在documents目录中某个位置的数据库形式 无论如何,我试图将其用作数据库,方法是将数据存储在其NSManagedObjectContext中。然而,在创建UIManagedDocument并将数据保存到其上下文几秒钟后(在我猜测超时后),应用程序崩溃,它告诉我没有持久的存储协调器 在创建托管文档之后,对于如何创建持久存储协调器,Apple文档似乎没有太多指导 我到底该怎么做 谢谢 编辑 我正在使用的代码: NSUR

我开始学习UIManagedDocument及其功能。据我所知,它是一种存储在documents目录中某个位置的数据库形式

无论如何,我试图将其用作数据库,方法是将数据存储在其
NSManagedObjectContext
中。然而,在创建
UIManagedDocument
并将数据保存到其上下文几秒钟后(在我猜测超时后),应用程序崩溃,它告诉我没有持久的存储协调器

在创建托管文档之后,对于如何创建持久存储协调器,Apple文档似乎没有太多指导

我到底该怎么做

谢谢

编辑

我正在使用的代码:

NSURL *url = [[self iCloudDocumentsURL] URLByAppendingPathComponent:nameOfDocument];

NSMutableArray *books = [self.books mutableCopy];
[books addObject:url];

[self setBooks:books];

UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];

NSDictionary *options = @{ NSMigratePersistentStoresAutomaticallyOption : @YES,
                           NSInferMappingModelAutomaticallyOption : @YES,
                           NSPersistentStoreUbiquitousContentNameKey : document.fileURL.lastPathComponent,
                           NSPersistentStoreUbiquitousContentURLKey : [self iCloudCoreDataLogFilesURL] };
[document setPersistentStoreOptions:options];

if (document.documentState == UIDocumentStateClosed) {
    [document openWithCompletionHandler:^(BOOL success) {
        Book *book = [Book newBookWithTitle:bookTitle
                     inManagedObjectContext:document.managedObjectContext];

        [document updateChangeCount:UIDocumentChangeDone];
    }];
}
更新

在后台线程上执行此代码之后。在打开文档后,我的应用程序仍然会在完成处理程序上记录“否”表示成功。但是,我的应用程序没有崩溃,而是得到以下日志:

2013-04-23 00:01:08.381 Notable[193:4b0b] -[_PFUbiquityRecordsImporter rollResponseOperation:encounteredAnError:whileTryingToAdoptBaseline:](1545): CoreData: Ubiquity:  <PFUbiquityBaselineRollResponseOperation: 0x1fa561d0> localPeerID: mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A, storeName: A-B893A0AB-B764-42F1-9402-38790DCEF96B, modelVersionHash: NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=
    ubiquityRootLocation: <PFUbiquityLocation: 0x1e59b790>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs

Encountered an error while trying to respond to the roll of baseline: <PFUbiquityBaseline: 0x1e54deb0>(0)
    permanentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip
    safeLocation: <PFUbiquityLocation: 0x1f8eb1b0>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A
    currentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip

    storeName: A-B893A0AB-B764-42F1-9402-38790DCEF96B
    modelVersionHash: NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=
    baselineArchiveLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip

Error: Error Domain=NSCocoaErrorDomain Code=134310 "The operation couldn’t be completed. (Cocoa error 134310.)" UserInfo=0x1f8d2ae0 {baseline=<PFUbiquityBaseline: 0x1e54deb0>(0)
    permanentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip
    safeLocation: <PFUbiquityLocation: 0x1f8eb1b0>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A
    currentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip

    storeName: A-B893A0AB-B764-42F1-9402-38790DCEF96B
    modelVersionHash: NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=
    baselineArchiveLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip
, localStoreKV=<PFUbiquityKnowledgeVector: 0x1f8220c0> ()}
userInfo: {
    baseline = "<PFUbiquityBaseline: 0x1e54deb0>(0)\n\tpermanentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip\n\tsafeLocation: <PFUbiquityLocation: 0x1f8eb1b0>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A\n\tcurrentLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip\n\n\tstoreName: A-B893A0AB-B764-42F1-9402-38790DCEF96B\n\tmodelVersionHash: NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=\n\tbaselineArchiveLocation: <PFUbiquityLocation: 0x1f8e7120>: /private/var/mobile/Library/Mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip\n";
    localStoreKV = "<PFUbiquityKnowledgeVector: 0x1f8220c0> ()";
}
2013-04-23 00:01:08.381值得注意的[193:4b0b]-[u p泛素报告RollResponse操作:遇到错误:在尝试使用数据库时:](1545):核心数据:泛素:本地peerid:mobile.2DDB96C5-A317-5BE5-8F29-9f5681a27a,店名:A-B893A0AB-B764-42F1-9402-38790DCEF96B=
UbiquityRotLocation::/private/var/mobile/Library/mobile Documents/my~app~标识符/日志
尝试响应基线滚动时遇到错误:(0)
永久位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip
安全位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BYSBUSTJXXYI2O8BX8BEOF15YIMkunegXQX6HDKAS=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A
当前位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/nk3bysbustjxxyi2o8bx8eof15 yimkunexqx6hdkas=/baseline.zip
店名:A-B893A0AB-B764-42F1-9402-38790DCEF96B
modelVersionHash:NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=
baselineArchiveLocation::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BYSBUSTJXXYI2O8BX8BEOF15YIMKUNEGXQX6HDKAS=/baseline.zip
错误:Error Domain=NSCOCAERRORDOMAIN Code=134310“操作无法完成。(Cocoa错误134310。)”UserInfo=0x1f8d2ae0{baseline=(0)
永久位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=/baseline.zip
安全位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BYSBUSTJXXYI2O8BX8BEOF15YIMkunegXQX6HDKAS=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A
当前位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/nk3bysbustjxxyi2o8bx8eof15 yimkunexqx6hdkas=/baseline.zip
店名:A-B893A0AB-B764-42F1-9402-38790DCEF96B
modelVersionHash:NK3BysbustJxxyi2O8bX8eof15YimkUnegxqX6HDkas=
baselineArchiveLocation::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BYSBUSTJXXYI2O8BX8BEOF15YIMKUNEGXQX6HDKAS=/baseline.zip
,localStoreKV=()}
用户信息:{
基线=“(0)\n\t永久位置::/private/var/mobile/Library/mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/nk3bysbustrjxxyi2o8bxeof15yimkunexqx6hdkas=/baseline.zip\n\t永久位置::/private/var/mobile/Library/Library/mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/nk3bysbustrjxxYI2O8BX8EOF15YIMKUEGXQX6HDKAS=/mobile.2DDB96C5-A317-5BE5-8F29-9F5E6681A27A\n\t当前位置::/private/var/mobile/Library/mobile Documents/my~app~ identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCRSIEF96B/NK3BYSBUSTJYI2O8BEOX8BEOF15YIMKUEGQX6HDKAS=/baseline.zip\n\n\t存储名称:A-B890AB-42764-DCOdeF790B\380B\nNK3BYSBUSTJXXYI2O8BX8EOF15YIMKUEGXQX6HDKAS=\n\t基本归档地址::/private/var/mobile/Library/mobile Documents/my~app~identifier/Logs/.baseline/A-B893A0AB-B764-42F1-9402-38790DCEF96B/NK3BYSBUSTJXXYI2O8BX8BEOF15YIMKUEGXQX6HDKAS=/baseline.zip\n”;
localStoreKV=“()”;
}

此方法还创建了一个“DocumentMetaData.plist”(根据我在评论中提到的CS193P视频中提到的这些文件,我认为这是必要的),而不是一个名为“persistentStore”的文件。

中以及中都有示例代码。您还可以通过使用主详细信息模板创建基于核心数据的项目来查看核心数据堆栈设置的示例

如果这是您第一次体验核心数据,我建议您阅读Tim Isted和Tom Harrington的《iOS核心数据》或Marcus Zarra的《iOS核心数据(第二版):iOS、OS X和iCloud的数据存储和管理》

我看到了一些看起来很奇怪的事情:


  • [self-iCloudDocumentsURL]
    是否指向本地文件系统

  • 为什么要将URL插入到书籍数组中

  • 在假设打开成功之前,测试块中的
    success
    变量


即使在iOS 6.x中,iCloud核心数据也没有准备好进入黄金时段。这当然不是新的iOS开发人员想要解决的问题。看看Black Pixel非常聪明的人对他们自己的一款产品说了些什么:。

在使用UIManagedDocument时,你不应该自己创建它-