我开始使用应用测试来使用Core Data
和iCloud
(使用魔法记录)。在配置Provisioning Profiles
和Entitlements之后遇到很多麻烦,应用终于运行了。一段时间后,应用程序崩溃并抛出此消息::
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
答案 0 :(得分:13)
是的,比我想起的次数多。
这意味着Core Data的内部设备无法以一种模糊和无证的方式连接到iCloud。没有恢复路径或修复 - 您只需稍后再试。这些错误不是来自Magical Record或您的代码,它们是内部Core Data / iCloud失败。
这就是事情:这并不意味着你做错了什么。其中的必然结果是,你无法做任何事情来解决它。当iCloud与Core Data一起使用时,有时会发生,你只需要处理它。提交一个错误,并祈祷你相信他们相信的任何神或神,他们有一天会修复它。使用iCloud的核心数据基本上是片状的,你遇到了最令人抓狂的部分之一。
有时只需再次尝试通话即可。但魔法记录会返回void
,因此检测代码中的失败并不像您希望的那么简单。
在测试期间,可能帮助从iCloud中删除所有应用程序的数据,以开始清理。您可以在iOS设置 - &gt;中执行此操作iCloud - &gt;存储&amp;备份 - &gt;管理存储 - &gt; (您的应用名称在此处) - &gt;编辑 - &gt;删除所有。另外,请务必查看http://developer.icloud.com/以查看云中存在的内容。此外,当您遇到问题时,请务必从设备中删除您的应用,以便不会有旧数据。