2014-10-31 3 views
4

Я пытаюсь использовать CKQueryOperation для этого:Можно ли получить количество записей, соответствующих CKQuery из CloudKit?

CKQueryOperation *o = [[CKQueryOperation alloc] initWithQuery:query]; 
[o setDesiredKeys:@[]]; 

Но она по-прежнему возвращает много данных, что мне не нужно в данный момент

<CKRecord: 0x79881a50; recordType=Comment, recordID=CBB7B269-47AH-406E-8934-682D31501778:(_defaultZone:__defaultOwner__), recordChangeTag=i1x8j1ey, values={ 
}> 
{ 
    creatorUserRecordID -> <CKRecordID: 0x7966e9d0; _e5b178bde573ba6fee336b9ed8:(_defaultZone:__defaultOwner__)> 
    lastModifiedUserRecordID -> <CKRecordID: 0x7966cdd0; _e5b178bd3e9e7a6e336b9f34ed8:(_defaultZone:__defaultOwner__)> 
    creationDate -> 2014-10-31 07:20:45 +0000 
    modificationDate -> 2014-10-31 07:20:45 +0000 
    modifiedByDevice -> iPhone Simulator 
} 

мне нужно только количество записей.

+0

Этого было уже сказано: http://stackoverflow.com/questions/24191999/cloudkit-count-records –

+0

@EdwinVermeer, я не хочу устанавливать ограничения, я хочу знать, сколько записей. – AlKozin

+0

Запросы агрегирования в CloudKit невозможны. Поэтому вы должны запрашивать все записи и подсчитывать их. Этот комментарий о настройке ограничения заключается в том, чтобы показать, что вы можете контролировать количество возвратов набора облаков записей. Потому что, если вы запрашиваете cloudkit, Apple решит, сколько записей он вернет. Когда вы выполняете запрос, есть вероятность, что не все записи будут возвращены. ЗапросCompletionBlock возвращает курсор. Вам нужно будет продолжить чтение, начиная с этого курсора. –

ответ

4

Запросы агрегирования в CloudKit невозможны. Поэтому вы должны запрашивать все записи и подсчитывать их. Чтобы убедиться, что все записи будут возвращены, вам нужно установить operation.resultsLimit на значение, большее, чем количество, иначе могло случиться, что не все записи будут возвращены.

Смежные вопросы