【问题标题】:Error/Crash when creating a UIManagedDocument in iCloud在 iCloud 中创建 UIManagedDocument 时出错/崩溃
【发布时间】:2013-03-04 19:08:36
【问题描述】:

在我的项目中,我将 UIManagedDocument 与 CoreData 和 iCloud 一起使用。在 iCloud 中创建 UIManagedDocument 时似乎有很多错误 - 尤其是在没有网络服务的情况下。

但是现在我在保存文档以供创建时遇到了一些奇怪的错误/应用程序崩溃与网络服务(也与 wifi):

-[PFUbiquitySetupAssistant validateOptionsWithError:](262): CoreData: Ubiquity:  Error attempting to read ubiquity root url: file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/.
Error: Error Domain=LibrarianErrorDomain Code=1 "The operation couldn’t be completed. (LibrarianErrorDomain error 1 - Unable to initiate item download.)" UserInfo=0x1f56d140 {NSURL=file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/, NSUnderlyingError=0x1d89b4a0 "The operation couldn’t be completed. (UBErrorDomain error 0.)", NSDescription=Unable to initiate item download.}
userInfo: {
NSDescription = "Unable to initiate item download.";
NSURL = "file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/";
NSUnderlyingError = "Error Domain=UBErrorDomain Code=0 \"The operation couldn\U2019t be completed. (UBErrorDomain error 0.)\"";
}

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'
*** First throw call stack:

它表示无法完成从事务日志文件夹的下载操作。我无法理解这一点,因为应用程序应该创建一个文档而不是下载任何内容。

顺便说一句,该应用的 iCloud 文件夹是空的!

从设备中删除 iCloud 帐户并再次登录也无济于事。该设备是运行 iOS 6 的 iPhone 4S。

有人有过类似经历吗?

编辑:

现在,经过数百次删除和重建后,我在同一台设备上遇到了不同的错误:

-[PFUbiquitySafeSaveFile waitForFileToUpload:](268): CoreData: Ubiquity: <PFUbiquityPeerReceipt: ...>(0)
permanentLocation: <PFUbiquityLocation: ...>: /private/var/mobile/Library/Mobile Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/mobile.XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Document/Q0_AoYZV8MTbAihmdWBiEFhxmCgziT9RyrvylTHgQP4=/receipt.0.cdt
safeLocation: <PFUbiquityLocation: ...>: /private/var/mobile/Library/Mobile Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/mobile.XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Document/Q0_AoYZV8MTbAihmdWBiEFhxmCgziT9RyrvylTHgQP4=/mobile.XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.0.cdt
currentLocation: <PFUbiquityLocation: ...>: /private/var/mobile/Library/Mobile Documents/XXXXXXXXXX~com~companyname~AppName/TransactionsFolder/mobile.XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Document/Q0_AoYZV8MTbAihmdWBiEFhxmCgziT9RyrvylTHgQP4=/mobile.XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.0.cdt

kv: (null)

Safe save failed for file, error: Error Domain=NSCocoaErrorDomain Code=512 "The file upload timed out." UserInfo=0x1de36dc0 {NSLocalizedDescription=The file upload timed out.}
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'
*** First throw call stack:

设备似乎无法访问 iCloud 服务,即使它获得了 iCloud 令牌并且可访问性很好......

【问题讨论】:

    标签: iphone ios core-data icloud uimanageddocument


    【解决方案1】:

    是的,我有非常类似的经历。这些是 Core Data 的 iCloud 集成中的内部错误。它们并不意味着您做错了什么,并且您无法在代码中做任何事情来修复它们。你是对的——你没有在你的代码中下载任何东西,但是 Core Data 正在尝试这样做,在幕后,并且失败了。这完全不受您的控制。

    第一个错误表明框架无法下载现有事务文件。可能没有,但也说不出来。第二个错误表示它无法创建任何新的事务文件。你是对的——你无权访问 iCloud,即使 API 说你可以访问。

    可能可以通过在“设置”--> iCloud 中找到您的应用并删除其中的所有数据、从设备中删除您的应用、牺牲一只鸡并重试来让事情再次运行。但是问题又回来了。向 Apple 提交错误并希望得到修复。

    【讨论】:

    • 好吧,我害怕得到这个答案 ;) 使用这个设备没有任何帮助 - 我删除了完整的 iCloud 帐户并再次添加它 - 没有成功。我会提交一个错误,但实际上这个错误是不可重现的(特别是因为没有明显的原因导致设备无法访问 iCloud)......
    • 还有一个问题:这些内部错误是仅与 UIManagedDocument/Core Data 和 iCloud 相关,还是与 UIDocument 和 iCloud 相关?因为从 UIManagedDocument 移开并使用 UIDocument 设计另一种模式将是另一种选择。
    • 我专门讨论的是 Core Data 内置 iCloud 支持的错误,因此它们不适用于 UIDocument。但是,UIDocument 有自己的一系列问题需要处理。我建议无论如何都提交错误,包括您的错误消息,因为他们知道这样的问题,并且错误获得优先级部分取决于有多少人为他们提交了问题。
    • 好的,我还是会把它们归档(在 developer.apple.com/bugreporter/ 下对吧?)。但是有什么可靠的解决方案来使用 iCloud 吗?
    【解决方案2】:

    如果您的设备在重置其 iCloud 数据后拒绝同步,请尝试通过设置 > 常规 > 重置所有设置重置所有设置。这种方法不会删除任何应用程序数据,并且可以解决Error trying to read ubiquity root url错误消息。

    【讨论】:

      【解决方案3】:

      我知道这是旧的,但我一直在寻找类似的问题,也许以下内容会对其他人有所帮助:

      在我的情况下,我是在删除 iCould 数据和正在开发的应用程序并从头开始重建后得到的。完全关闭并重新启动设备似乎可以解决问题 - 不知道为什么,也许 Timbo 的“重置所有设置”会做同样的事情 - 但这样您也不会丢失其他应用程序设置。

      阿里

      【讨论】:

        猜你喜欢
        • 2013-02-16
        • 2012-05-25
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        相关资源
        最近更新 更多