设备离线时CKQueryOperation没有返回错误

时间:2016-03-26 00:02:00

标签: ios cloudkit

我正在尝试在我的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时,我是如何/在哪里通知错误的?

由于

1 个答案:

答案 0 :(得分:14)

按照惯例,我发布赏金并在接下来的一小时内找到答案或2.不确定我最初是如何错过this,但它包含了我正在寻找的答案。

所以加入这一行

queryOperation.qualityOfService = .UserInitiated

幕后的变化,我们在

中有一些不错的动作
queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) in
    // We get an error message... Finally !!
    print(error)
}

无法在Apple Docs中找到任何暗示这一点的内容。