4

我可以很容易地获得带有特定 ID 的记录。如果我需要特定的东西,那么我可以使用 CKQueryOperation。

我需要为其提供适当的谓词,但我不能将 ID 指定为谓词的参数,因为它不支持 CKRecordValue 协议。另一个想法是使用CKReference,但是如何编写正确的谓词呢?

如果我尝试使用字符串数组并再次评估 recordID.recordName 键路径:

    var references:[String] = IDs.map{$0.recordName}
    var predicate = NSPredicate(format: "ANY recordID.recordName IN %@", references)

我收到以下错误:

<CKError 0x17005f3b0: "Invalid Arguments" (12/1009); "Invalid predicate: recordKey (recordID.recordName) contains invalid characters">

谓词格式输出:

predicate ANY recordID.recordName IN {"AFF487BE-4A7E-4F76-8185-79FA2E1EFC33", "D4D83B37-97DE-4BF2-9E43-4C5522E36DF1", "0126008A-0B42-4F95-AB31-BB13B6215475", "6DE83AD9-F307-467D-A5EF-AD2B97B8E7F7", "F701ADBF-9BE7-4F42-8CA9-44D2D0E629F8", "38C4FB60-8A65-43F9-8E1E-4C48D5B60DCD"}

任何帮助表示赞赏。

4

1 回答 1

3

您可以使用 aCKFetchRecordsOperation来获取您已经知道 RecordID 的记录:

let fetchRecordsOperation = CKFetchRecordsOperation(recordIDs: recordIDs)
fetchRecordsOperation.desiredKeys = desiredKeys

使用您要检索的 CKRecordID 数组初始化操作,它将返回 中的每个单独的记录结果perRecordCompletionBlock以及 fetched 中的所有记录fetchRecordsCompletionBlock

您可以通过将 NSStrings 数组设置为desiredKeys具有您要检索的字段名称的属性来默认检索完整记录或仅检索其值的子集。

于 2014-07-17T01:54:04.003 回答