【发布时间】:2023-03-17 22:28:01
【问题描述】:
我正在尝试在我的 CloudKit 数据库上使用 CKQueryOperation,而不是 performQuery。
两者都有效,但是当使用 CKQueryOperation 时,设备离线时我没有收到错误消息,但在使用 performQuery 时会出现错误
这是我的performQuery 示例,数据库是我的CKDatabase
database.performQuery(q, inZoneWithID: nil) { (records:[CKRecord]?, error:NSError?) in
if error != nil {
print(error!.localizedDescription)
return
}
}
设备离线时报错,让我提示用户。错误是
The internet connection appears to be offline
但是,当我使用 CKQueryOperation 时,我没有收到任何错误
let p = NSPredicate(format:"recordID IN %@", student.courses)
let q = CKQuery(recordType: String(Course), predicate: p)
let queryOperation = CKQueryOperation(query: q)
queryOperation.recordFetchedBlock = { record in
// not called without network connection - doesn't enter scope
print(record)
}
queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
// not called without network connection - doesn't enter scope
print(cursor)
print(error)
}
database.addOperation(queryOperation)
通过连接,我收到了两种方法的数据,因此它按预期工作。
使用CKQueryOperation 时如何/在哪里得知错误?
谢谢
【问题讨论】: