4

Apple のドキュメントによると、iCloud にログインしていないユーザーは公開データベースから読み取ることができますが、公開データベースを照会すると、次のエラーが発生します。

エラー Domain=NSCocoaErrorDomain Code=4097 「The operation could not be completed. (Cocoa error 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

エラー 4097 は、アプリケーションが CloudKit デーモンである cloudd と通信できない場合に返されます。

これは、権限の問題か、cloudd のバグが原因である可能性があります。syslog でさらに手がかりを確認し、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 に答える