CloudKit 仅获取第一条记录

Posted

技术标签:

【中文标题】CloudKit 仅获取第一条记录【英文标题】:CloudKit Fetch First Record Only 【发布时间】: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)")
            
        
    

【问题讨论】:

【参考方案1】:

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

    在“Modified”上添加排序,这是 Apple 在每条记录上生成的字段。 您需要使用 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 似乎对我没有影响 - 我仍然得到查询返回的所有记录。

以上是关于CloudKit 仅获取第一条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CloudKit 查询和获取数据?

从 CloudKit 中的 CKRecord.Reference 获取价值

CloudKit CKReference 列表

如何让多个用户同时更新我的​​一条 CloudKit 记录而不重叠?

CloudKit 字节到字符串数组

CloudKit 支持应用程序开发到生产部署