2014-11-12 2 views
0

Я пытаюсь выяснить способ использования NSPredicate (я думаю, что это инструмент, который мне нужно использовать), чтобы использовать CloudKit для запроса последнего CKRecord определенного типа записи ,NSPredicate by createDate, получить только первый результат

Поскольку это только последний, мне не нужны все возвращенные мне CKRecords, и я не хочу устанавливать ограниченный промежуток времени (так как это приложение может иметь кучу людей, использующих его в раз и, вероятно, в конечном итоге будет иметь близкое к нулю людей, использующих его). Ближайший пост, который я мог найти по моему вопросу, касался получения CKRecords между двумя датами (несколько минут назад, и когда был запущен запрос).

Таким образом, если человек должен был получить самую последнюю запись, и ей было 2 месяца, или это было 2 секунды, этот запрос будет работать.

Кто-нибудь знает, как это сделать? У меня есть код, который работает для использования предиката, который находит все записи, поэтому только эта часть нуждается в исправлении. Вот неполный код сегмента я работаю сейчас:

NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; 
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Photo" predicate:thePredicate]; 

[[[CKContainer defaultContainer] publicCloudDatabase] performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { 

}]; 

ответ

1

Вы могли бы решить эту проблему с помощью CKQueryOperation, где вы установили ResultsLimit к 1. для запроса вы можете просто использовать truepredicate. по запросу добавьте NSSortDiscriptor для создания keyDate и восходящего false в массив sortDescriptors. Таким образом, результат всегда будет всего лишь 1 записью, которая была вставлена ​​совсем недавно. Даже если эта запись была старше двух месяцев.