CloudKit Запросы для вышедших пользователей

Таким образом, согласно документации Apple, пользователям, не вошедшим в iCloud, по-прежнему разрешено чтение из общедоступных баз данных, но при запросе общедоступной базы данных я получаю следующую ошибку:

Ошибка Domain=NSCocoaErrorDomain Code=4097 "Операция не может быть завершена. (Ошибка Какао 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
}

Любые мысли, советы или советы, безусловно, приветствуется. Спасибо

2 ответа

Ошибка 4097 возвращается, когда ваше приложение не может общаться с cloudd, демоном CloudKit.

Это может быть либо из-за проблемы с правами, либо из-за ошибки в облаке. Проверьте свой системный журнал на наличие дополнительных подсказок и найдите журналы сбоев из cloudd. Если у вас есть журнал сбоев для cloudd, пожалуйста, прикрепите его к новому радару на http://bugreport.apple.com/

У меня была похожая проблема - после проверки системного журнала, предложенного @farktronix, после фильтрации по cloudd Я видел:

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

Оказывается, мой предикат запроса был неверным - в моем запросе на подписку я пытался использовать предикат:

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

в то время как я должен был использовать

NSPredicate(format: "recordID = %@", someCKRecord.recordID)

У меня похожая проблема, если я посылаю слишком много раз запросы в iCloud.

Это происходит для меня, когда я пытаюсь сделать CKModifyRecordsOperation а их больше 100 recordsToSave, Я пытался около 3 раз подряд сделать эту операцию. И тогда я получил эту ошибку. Тогда каждому API CloudKit было отказано. Через несколько минут каждый выздоровел.

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})
Другие вопросы по тегам