1

Objective-C を使用して、クラウドキットで自分のレコードのインデックスを照会する方法を見つけようとしています。すべてのレコードを取得するクエリを作成します。

CKContainer *container = [CKContainer containerWithIdentifier:containerID];
CKDatabase *publicDatabase = [container publicCloudDatabase];
CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType
                                           predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[publicDatabase performQuery:query
                inZoneWithID:nil
           completionHandler:^(NSArray *results, NSError *error)
 {

     if (!error)
     {
     NSLog(@"results query %@", results);

     }

     else
     {
         NSLog(@"FETCH ERROR: %@", error);
     }
 }];

しかし、各レコードのインデックスを取得する必要があります。すべてのレコードのインデックスのみを照会する方法を知っている人はいますか?

私は本当にあなたの助けに感謝します

4

2 に答える 2

2

CKQuery の代わりに CKQueryOperation を使用します。次に、desiredKeys プロパティを設定して、結果を ID のみに制限できます。次のようなものを使用できます。

    CKContainer *container = [CKContainer containerWithIdentifier:containerID];
    CKDatabase *publicDatabase = [container publicCloudDatabase];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType
                                               predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
    CKQueryOperation *queryOp = [[CKQueryOperation alloc] initWithQuery:query];
    queryOp.desiredKeys = @[@"record.recordID.recordName"];
    queryOp.recordFetchedBlock = ^(CKRecord *record)
    {
        // do something...
    };

     queryOp.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *error)
    {
        // do something else...
    };

    queryOp.resultsLimit = CKQueryOperationMaximumResults;
    [publicDatabase addOperation:queryOp];
于 2014-12-01T09:09:30.990 に答える