core-data - 核心数据/iCloud 播种与本地 xml 文件在 iOS8 中抛出错误

标签 core-data ios8 icloud

希望这很简单,但我还没有找到解决办法。我有一个应用程序,我正在尝试使用它来实现 iCloud 和 Core Data。我希望它能在 iOS7 和 iOS8 上运行。

该应用程序是收藏品的 list /表格 View 应用程序。

本质上,该应用程序有一个预先播种的 xml 文件,其中包含大约 50,000 个内容。 sqlite/core 数据最初配置为只有 1 项。用户可以从 TableView 中选择要添加到核心数据存储的组(这样就不会包含所有 50,000 个项目)。当用户选择包含 1-50 个项目的组时,它会解析这些项​​目的 xml 并将它们写入核心数据存储中。当用户选择具有大量文件的组时,它会解析并添加它们,但在解析过程中也会抛出一些随机的“url 上没有文档”错误。应用程序不会崩溃,并且所有项目似乎都已添加,但应用程序停止与 iCloud 同步。确切的错误是:

__45-[PFUbiquityFilePresenter processPendingURLs]_block_invoke(439): CoreData: Ubiquity:  
Librarian returned a serious error for starting downloads Error Domain=BRCloudDocsErrorDomain Code=5 
"The operation couldn’t be completed. (BRCloudDocsErrorDomain error 5 - No document at URL)" 
UserInfo=0x7fd7f54abea0 {NSDescription=No document at URL, 
NSFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-      0D52D833E28A/data/Library/Mobile    Documents/iCloud~com~xxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt, 
NSUnderlyingError=0x7fd7f54aa200 "The operation couldn’t be completed. No such file or directory"} 
with userInfo {
NSDescription = "No document at URL";
NSFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. 
No such file or directory\" UserInfo=0x7fd7f5433240 {NSDescription=No such file or directory}";
} for these urls: (
"file:///Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile%20Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt"
)

然后我也会收到“移动”错误(有时在解析完成后):

[PFUbiquityTransactionLog moveFileToPermanentLocationWithError:](761): CoreData: Ubiquity:  
CoreData: Ubiquity: Error writing export log to file: file:///Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile%20Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt
error: Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" 
UserInfo=0x7fd7f49cdfd0 {NSSourceFilePathErrorKey=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSUserStringVariant=(
Move
), NSDestinationFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSUnderlyingError=0x7fd7f497f430 "The operation couldn’t be completed. File exists"}
userInfo: {
NSDestinationFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSSourceFilePathErrorKey = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=17 \"The operation couldn\U2019t be completed. File exists\"";
NSUserStringVariant =     (
    Move
);

}

关于如何解决这个问题有什么想法吗?我是否试图一次进行太多更改,从而导致核心数据/icloud 同步崩溃?任何想法或指示将不胜感激。

扎克

最佳答案

扎克,这不是一个答案(我没有代表发表评论),但它可能会帮助您走上正确的道路。我正在实现 iCloud 核心数据,并且遇到了与 iOS 8 相同的问题...相同的“URL 处没有文档”错误(对我来说没有移动错误),以及数据同步中的相同故障。两个观察结果:

  • 当我在两台设备上运行我的应用程序时,核心数据同步最初运行得很好......比如几分钟和一些更新。然后我收到“URL 处没有文档”错误。

  • 我的 .sqlite 数据库非常小,我尝试进行的更新也很有限(例如添加一个新实体),因此我认为文件大小或更新复杂性不是因素。

  • 在记录这些错误的设备上,商店会停止从 iCloud 导入更改。但我在该设备上所做的更改确实会继续保留到其他设备上。所以效果就像是单向故障。

希望这有帮助。感谢您发布有关您取得的任何进展的帖子。我已经为此奋斗了几个星期,差点放弃并在没有 iCloud 数据同步的情况下交付该应用程序(这是通用的)。

关于core-data - 核心数据/iCloud 播种与本地 xml 文件在 iOS8 中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562764/

相关文章:

Swift 核心数据类方法?

iphone - 核心数据 : UIManagedDocument or AppDelegate to setup core data stack?

ios - 我可以在 iCloud 上共享 CoreData 吗?

objective-c - 如果我没有使用 Core Data,我该如何使用 iCloud Sync?

ios - 复合谓词不返回结果

ios - 核心数据迁移 : How to populate new attribute?

swift - 隐藏一个 View 后向上移动所有 View

ios - 是否可以在纯 Objective-C 中编写 iOS 8 应用程序?

ios8 - 状态栏的问题被隐藏在ios 8的横向模式中,并且在xcode 6中发布ios 8之后尝试在ios 7中正常工作

ios - 同步核心数据时,调用 URL ForUbiquityContainerIdentifier : needed?