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 中的 CKRecord.Reference 获取价值