【问题标题】:CloudKit Fetch First Record OnlyCloudKit 仅获取第一条记录
【发布时间】:2015-08-08 00:33:29
【问题描述】:

我想知道如何从 CloudKit 表中获取第一条记录。例如,我有一个“类”表,我只想获取上次修改的类,而不是像现在这样获取所有类:

let pred = NSPredicate(format: "Students CONTAINS %@", studentRecord)
var query = CKQuery(recordType: "Class", predicate: pred)
publicDB.performQuery(query, inZoneWithID: nil) {
    records, error in
    if error != nil {
        println("\(error)")
    } else {
        if records.count > 0 {
            for record in records {
                println("\(record)")
            }
        }
    }
}

【问题讨论】:

    标签: ios swift cloudkit ckquery


    【解决方案1】:

    嗯,对于您的特定场景,您需要做两件事。

    1. 在“Modified”上添加排序,这是 Apple 在每条记录上生成的字段。
    2. 您需要使用 CKQueryOperation 对 CKQuery 施加限制。

    您的代码应如下所示:

    let pred = NSPredicate(format: "Students CONTAINS %@", studentRecord)
    var query = CKQuery(recordType: "Class", predicate: pred)
    let sort = NSSortDescriptor(key: "Modified", ascending: false)
    query.sortDescriptors = [sort]
    var queryOperation = CKQueryOperation (query: query)
    queryOperation.resultsLimit = 1
    queryOperation.recordFetchedBlock = {
        record in
        println("\(record)")
    }
    queryOperation.queryCompletionBlock = {
        queryCursor, error in
        if error != nil {
            println("\(error)")
        }
    }
    publicDB.addOperation(queryOperation)
    

    【讨论】:

    • 设置 resultsLimit 似乎对我没有影响 - 我仍然得到查询返回的所有记录。
    猜你喜欢
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2010-11-14
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多