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})