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

标签 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

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

最佳答案

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

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

iCloud 2012 推出后不久,我就开始支持它。事实上,将 iCloud 集成到 may 应用程序中非常容易,在我的测试中一切正常。在我发布第一个支持 iCloud 的版本后不久,我收到了第一个用户提示奇怪的错误、崩溃、启动问题等。

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

iCloud 犹如沉船千漏。一旦您解决了几个问题并认为现在一切都应该正常工作,下一个问题就会出现。

很快我意识到问题不在于我的 iCloud 实现,而在于 iCloud 本身。它只是行不通。我只是用它来同步我的核心数据堆栈,这真是太糟糕了。也许它在处理文档或简单的键值对时效果更好,但 iCloud + Core Data 是不可能的组合。

我 80% 的支持工作都是由于与 iCloud 相关的问题。当然用户会说“这是你的错,其他应用程序使用 iCloud 没有任何问题”,但这显然不是事实。因此,您的应用会因为 iCloud 而收到大量差评只是时间问题。

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

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

我尽了一切努力让它工作并花费

关于ios - iCloud 异常 - 导入事务日志时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624111/

相关文章:

ios - 如何使用 Swift 使用 TouchID?

Java : Impossible to parse "23/10/1973" with "dd/MM/yyyy HH:mm" format

Java NullPointerException - 短程序

ios - 如何在 TableView 中显示 APAddressBook 的联系人

ios - 如何删除 ios 应用程序的 tmp 目录文件?

ios - 使用 if 语句将 tableViewController 插入 navigationController

java - Spring MongoDb ContextLoaderListener

ios - 带有 UICollectionView 的 UITableViewCells 低性能(Swift)

ios - 将 GCD 与也进行异步调用的代码一起使用是否安全

ios - 如何打开/关闭音乐设置 objective-c