4

所以根据Apple的文档,未登录iCloud的用户仍然可以从公共数据库中读取,但是在查询公共数据库时,我收到以下错误:

错误域 = NSCocoaErrorDomain 代码 = 4097 “操作无法完成。(Cocoa 错误 4097。)”(连接到名为 com.apple.cloudd 的服务) UserInfo=0x7c3498c0 {NSDebugDescription=连接到名为 com.apple.cloudd 的服务}

这是我的代码供参考:

let container = CKContainer.defaultContainer()
let database = container.publicCloudDatabase

let predicate = NSPredicate(value: true)
let episodeQuery = CKQuery(recordType: "Episode", predicate: predicate)
database.performQuery(episodeQuery, inZoneWithID: nil) {
    // Record handling goes here
}

当然,任何想法、提示或建议都会受到赞赏。非常感谢

4

3 回答 3

3

当您的应用程序无法与 CloudKit 守护程序 cloudd 通信时,将返回错误 4097。

这可能是由于权利问题或 cloudd 中的错误。检查您的系统日志以获取更多线索,并从 cloudd 中查找崩溃日志。如果您有 cloudd 的崩溃日志,请将其附加到bugreport.apple.com的新雷达上

于 2015-02-20T19:26:30.683 回答
0

我遇到了类似的问题-按照@farktronix 的建议检查系统日志后,在过滤后cloudd我看到:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unexpected expression: NSSelfExpression'

原来我的查询谓词不正确 - 在我的订阅查询中,我试图使用谓词:

NSPredicate(format: "self = %@", someCKRecord)

而我应该一直在使用

NSPredicate(format: "recordID = %@", someCKRecord.recordID)
于 2017-12-01T04:28:11.753 回答
0

如果我向 iCloud 发送太多次请求,我也会遇到类似的问题。

当我尝试做CKModifyRecordsOperation并且有超过 100 个时,它会发生在我身上recordsToSave。我连续尝试了大约 3 次来做这个操作。然后我得到了这个错误。然后每一个 CloudKit API 都被拒绝了。几分钟后,每个人都恢复了。

2019-01-14 20:27:19.326912+1300 inkDiary[27136:5424371] [LogFacilityCK] Got a connection error for operation 95C747D64BEA5FAC: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.cloudd" UserInfo={NSDebugDescription=connection to service named com.apple.cloudd}
Optional(Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.cloudd" UserInfo={NSDebugDescription=connection to service named com.apple.cloudd})
于 2019-01-14T07:38:01.940 回答