设备离线时 CKQueryOperation 不返回错误
CKQueryOperation not returning error when device offline
我正在尝试在我的 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
时如何/在哪里收到错误通知?
谢谢
像往常一样,我 post 赏金并在接下来的一两个小时内找到答案。不确定我最初是如何错过 但它包含了我正在寻找的答案。
所以通过添加这一行
queryOperation.qualityOfService = .UserInitiated
幕后发生了一些变化,我们在
中采取了一些不错的行动
queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
// We get an error message... Finally !!
print(error)
}
在 Apple 文档中也找不到任何提示。
我正在尝试在我的 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
时如何/在哪里收到错误通知?
谢谢
像往常一样,我 post 赏金并在接下来的一两个小时内找到答案。不确定我最初是如何错过
所以通过添加这一行
queryOperation.qualityOfService = .UserInitiated
幕后发生了一些变化,我们在
中采取了一些不错的行动queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
// We get an error message... Finally !!
print(error)
}
在 Apple 文档中也找不到任何提示。