8

我开始了一个应用程序测试以使用Core DataiCloud(使用 Magical Records)。经过一番配置Provisioning Profiles和授权的麻烦后,该应用程序终于运行了。一段时间后,应用程序崩溃并抛出此消息::

2012-12-31 03:42:07.079 iCloudTest[252:1103] -[PFUbiquitySafeSaveFile waitForFileToUpload:](268): CoreData: Ubiquity:  <PFUbiquityPeerReceipt: 0x1cd5a420>(0)
permanentLocation: <PFUbiquityLocation: 0x1cd57b30>: /private/var/mobile/Library/Mobile Documents/MA5BADG5AW~com~gazapps~iCloudTest/mobile.4088E03C-763E-5A81-BB1B-64CABAFA73E3/com.gazapps.iCloudTest/v8GumdiUYmkE0aO9iGtPTPHX07qqWk7kRytsQwHKjwU=/receipt.0.cdt
safeLocation: <PFUbiquityLocation: 0x1cd57a80>: /private/var/mobile/Library/Mobile Documents/MA5BADG5AW~com~gazapps~iCloudTest/mobile.4088E03C-763E-5A81-BB1B-64CABAFA73E3/com.gazapps.iCloudTest/v8GumdiUYmkE0aO9iGtPTPHX07qqWk7kRytsQwHKjwU=/mobile.4088E03C-763E-5A81-BB1B-64CABAFA73E3.0.cdt
currentLocation: <PFUbiquityLocation: 0x1cd57a80>: /private/var/mobile/Library/Mobile Documents/MA5BADG5AW~com~gazapps~iCloudTest/mobile.4088E03C-763E-5A81-BB1B-64CABAFA73E3/com.gazapps.iCloudTest/v8GumdiUYmkE0aO9iGtPTPHX07qqWk7kRytsQwHKjwU=/mobile.4088E03C-763E-5A81-BB1B-64CABAFA73E3.0.cdt

kv: (null)

Safe save failed for file, error: Error Domain=NSCocoaErrorDomain Code=512 "The file upload timed out." UserInfo=0x1cd5b7d0 {NSLocalizedDescription=The file upload timed out.}
2012-12-31 03:42:07.083 iCloudTest[252:1103] +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0xe5ac0) Error: The file upload timed out.
2012-12-31 03:42:07.085 iCloudTest[252:1103] +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0xe5ac0) Error Message: The file upload timed out.
2012-12-31 03:42:07.086 iCloudTest[252:1103] +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0xe5ac0) Error Domain: NSCocoaErrorDomain
2012-12-31 03:42:07.087 iCloudTest[252:1103] +[MagicalRecord(ErrorHandling) defaultErrorHandler:](0xe5ac0) Recovery Suggestion: (null)
2012-12-31 03:42:07.089 iCloudTest[252:907] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x3a7702a3 0x3465f97f 0x3a6bae8d 0xdd453 0x38a6311f 0x38a624b7 0x38a671bd 0x3a743f3b 0x3a6b6ebd 0x3a6b6d49 0x38a842eb 0x338f62f9 0xd101d 0x37f22b20)
libc++abi.dylib: terminate called throwing an exception

我使用这种方法来设置核心数据堆栈:

[MagicalRecord setupCoreDataStackWithiCloudContainer:@"XXXXXXXX.com.gazapps.iCloudTest" localStoreNamed:@"PersonDB.sqlite"];

有人遇到过这个问题吗?

Enviroment:
OSX 10.8.2,
Xcode 4.5.2,
app -> iOS 6,
device -> iPhone 4S
4

1 回答 1

13

是的,比我想回忆的还要多。

这意味着 Core Data 的内部无法以某种晦涩和无证的方式连接到 iCloud。没有恢复路径或修复方法 - 您只需稍后再试即可。这些错误不是来自 Magical Record 或您的代码,而是内部核心数据/iCloud 故障。

事情是这样的:这并不意味着你做错了什么。随之而来的结果是,您无法修复它。将 iCloud 与 Core Data 一起使用时,有时会发生这种情况,您只需要处理它。提交一个错误并向任何你相信的神祈祷,他们总有一天会修复它。带有 iCloud 的 Core Data 从根本上说是不稳定的,你遇到了最令人抓狂的部分之一。

有时再次尝试通话会有所帮助。但是 Magical Record 返回void,因此检测代码中的故障并不像您希望的那么简单。

在测试期间,从 iCloud 中删除应用程序的所有数据以开始清理可能会有所帮助。您在 iOS 中的设置 --> iCloud --> 存储和备份 --> 管理存储 -->(您的应用程序名称)-> 编辑 --> 全部删除。还请务必查看http://developer.icloud.com/以查看云中存在的内容。此外,当您遇到问题时,请务必从设备中删除您的应用程序,以免旧数据存在。

于 2012-12-31T18:33:22.037 回答