【发布时间】:2019-11-10 22:34:23
【问题描述】:
根据 Apple 文档,lastModifiedUserRecordID 是在 iCloud 上自动生成的系统字段。
我想从公共 iCloud 数据库中获取我上次修改的记录。
我在 CloudKit Dashboard 上将“modifiedBy”设置为 Queryable 并添加了这个谓词:
let userId = CKRecord.Reference(recordID: userCKRecordID, action: .none)
lastModifiedPred = NSPredicate(format: "lastModifiedUserRecordID = %@", userId)
而且它不返回任何结果。如果我删除此谓词,它会返回 1 个结果,并且我可以在仪表板中看到最后修改的记录 id (recordName) 与我发送它的用户记录名匹配。
奇怪的是,使用“creatorUserRecordID”并传递与上面相同的值确实会返回正确的结果,但我需要 lastModifiedBy。
编辑:根据建议,我尝试使用实际的 userCKRecord.recordName 作为字符串并将此谓词发送到 CloudKit。
lastModifiedPred = NSPredicate(format: "lastModifiedUserRecordID = %@", userCKRecord.recordName)
并收到此错误:
"字段\'___modifiedBy\'的值类型为REFERENCE,不能为 使用过滤值类型 STRING 查询”
如上所述,我可以使用顶部的原始谓词(使用 CKRecord.ID)很好地查询 creatorUserRecordID,但它不适用于 lastModifiedUserRecordID。
【问题讨论】: