根据 Apple 文档,lastModifiedUserRecordID 是一个在 iCloud 上自动生成的系统字段。
我想从我最后修改的公共(public) iCloud 数据库中获取记录。
我在 CloudKit 仪表板上将“modifiedBy”设置为 Queryable 并添加了这个谓词:
let userId = CKRecord.Reference(recordID: userCKRecordID, action: .none)
lastModifiedPred = NSPredicate(format: "lastModifiedUserRecordID = %@", userId)
它没有返回任何结果。如果我删除此谓词,它会返回 1 个结果,并且我可以在仪表板中看到最后修改的记录 ID (recordName) 与我发送给它的用户 recordName 匹配。
奇怪的是,使用“creatorUserRecordID”并传递与上面相同的值确实会返回正确的结果,但我需要 lastModifiedBy。
编辑:根据建议,我尝试使用实际的 userCKRecord.recordName 作为字符串并将此谓词发送到 CloudKit。
lastModifiedPred = NSPredicate(format: "lastModifiedUserRecordID = %@", userCKRecord.recordName)
并收到此错误:
"Field \'___modifiedBy\' has a value type of REFERENCE and cannot be queried using filter value type STRING"
正如我上面提到的,我可以使用顶部的原始谓词(使用 CKRecord.ID)很好地查询 creatorUserRecordID,但它不适用于 lastModifiedUserRecordID。
最佳答案
由于您要获取您最后一次修改的记录,因此您必须首先获取您的 UserRecordID
。这是通过调用
fetchUserRecordID(completionHandler: { (myUserRecordID, error) in
… // see below
}
参见 the docs .这样,您就可以得到您的用户 myUserRecordID
。
有了这个,你可以设置你的查询谓词:
let lastModifiedPred = NSPredicate(format: "lastModifiedUserRecordID = %@", myUserRecordID)
并执行您的查询。
关于swift - 如何通过 lastModifiedUserRecordID 查询 CloudKit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815854/