iCloud异常 - 导入事务日志时出错

时间:2014-02-07 09:39:43

标签: ios objective-c exception xcode5 icloud

我正在尝试将iCloud集成到我的一个iOS应用中。起初一切正常,但每个人都知道,然后iCloud停止工作,应用程序崩溃。事务日志似乎有些问题,但我无法弄清楚具体的来源。试图捕捉异常也是不可能的。

这是iCloud创建的控制台输出:

2014-02-07 10:23:45.118 MyApp[1410:3707] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](754): CoreData: Ubiquity:  mobile~5508B01E-F77F-4AF1-88DE-2E2F8DC55932:MyAppCloudDB
Using local storage: 1

2014-02-07 10:23:45.892 MyApp[1410:3707] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](754): CoreData: Ubiquity:  mobile~5508B01E-F77F-4AF1-88DE-2E2F8DC55932:MyAppCloudDB
Using local storage: 0

2014-02-07 10:24:28.632 MyApp[1410:1803] -[_PFUbiquityRecordImportOperation main](731): CoreData: Ubiquity:  Error importing transaction log: <PFUbiquityTransactionLog: 0x16177920>
transactionLogLocation: <PFUbiquityLocation: 0x160c3e80>: /var/mobile/Library/Mobile Documents/M889WYL2LY~com~example~MyApp/MyAppTransactionLogs/User~37B9682D-CED2-5F79-AF06-1FE99E7DEE9E/MyAppCloudDB/SZPp~RKudtVxEBMJzTVTupTv0WjG6i~o9Vj54dlknjc=/8AB09D17-5856-49B9-BE4C-A56451FB1EF4.1.cdt
transactionNumber: 34
, exception: *** setObjectForKey: key cannot be nil
User Info: (null)

2014-02-07 10:24:28.661 MyApp[1410:1803] -[_PFUbiquityRecordsImporter operation:failedWithError:](1003): CoreData: Ubiquity:  Import operation encountered an error: Error Domain=NSCocoaErrorDomain Code=134060 "The operation couldn’t be completed. (Cocoa error 134060.)" UserInfo=0x162a8b20 {exception=*** setObjectForKey: key cannot be nil}
userInfo: {
exception = "*** setObjectForKey: key cannot be nil";
}. While trying to import the log file at the URL: <PFUbiquityTransactionLog: 0x16177920>
transactionLogLocation: <PFUbiquityLocation: 0x160c3e80>: /var/mobile/Library/Mobile Documents/M889WYL2LY~com~example~MyApp/MyAppTransactionLogs/User~37B9682D-CED2-5F79-AF06-1FE99E7DEE9E/MyAppCloudDB/SZPp~RKudtVxEBMJzTVTupTv0WjG6i~o9Vj54dlknjc=/8AB09D17-5856-49B9-BE4C-A56451FB1EF4.1.cdt
transactionNumber: 34

2014-02-07 10:24:28.686 MyApp[1410:1803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: key cannot be nil'
*** First throw call stack:

(0x30b47e83 0x3aea46c7 0x30a82ecb 0x309dd0cb 0x3099f061 0x309a1841 0x31476aa5 0x3151a96d 0x3b38de7b 0x3b38af93 0x3b38e745 0x3b38e9c5 0x3b4b8dff 0x3b4b8cc4)
libc++abi.dylib: terminating with uncaught exception of type NSException

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

受到berecs的启发,对我的问题发表评论我想分享对我有用的解决方案:

停止使用iCloud!现在!放下吧!不要浪费你的时间去做一些富有成效的事情。

我开始支持iCloud 2012,不久之后。事实上,将iCloud集成到app应用程序非常简单,在我的测试中一切正常。在我发布支持iCloud的第一个版本后不久,我收到了第一个用户抱怨奇怪的错误,崩溃,启动问题等等。

当然我认为我犯了一些错误,我的实现会出错,并且我可以通过一些错误修复来解决问题。情况并非如此。

iCloud就像一艘有数千次泄漏的沉船。一旦你解决了一些问题并认为一切都应该正常工作,那么下一个问题就出现了。

很快我意识到我的iCloud实现不是问题,而是我自己的iCloud。它只是不起作用。我用它来同步我的核心数据堆栈,这很糟糕。使用Documents或简单的Key Value Pa可能会更好,但iCloud + Core Data是不可能的组合。

我支持工作的80%是由于与iCloud相关的问题。当然用户说&#34;这是你的错,其他应用程序使用iCloud没有任何问题&#34;但这显然不正确。因此,只是因为iCloud,您的应用才能获得大量不良评论只是时间问题。

去年我从我的应用中删除了iCloud支持,并添加了对Dropbox和Google Drive等其他同步服务的支持。当然,这不是iCloud的1比1替换(没有实时同步等),但至少这些服务有效!

这是摆脱这些奇怪的iCloud问题的最佳解决方案: 摆脱iCloud!

我尝试了一切以使其工作并花费

答案 1 :(得分:1)

这些是内部的iCloud异常,遗憾的是,你无法对它们做些什么。你无法抓住它们,即使你这样做,你也无法处理它们。 iCloud是不透明的,当它出错时,你就会卡住。

显而易见的一件事:如果您仍在此应用中支持iOS 6或iOS 5,立即停止。在这些版本上运行时至少不支持iCloud。在iOS 7上,iCloud得到了很大的改进,虽然不完美但不太可能遇到这种麻烦。