通过creationDate进行NSPredicate,只获得第一个结果

时间:2014-11-12 00:29:16

标签: objective-c iphone xcode nspredicate cloudkit

我试图找出一种方法来使用NSPredicate(我认为这是我需要使用的工具)来使用CloudKit查询特定记录类型的最新CKRecord。

因为它只是最近的一个,我不需要所有的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 个答案:

答案 0 :(得分:1)

您可以使用CKQueryOperation解决此问题,其中您将resultsLimit设置为1。 对于查询,您可以使用truepredicate。 在查询上添加一个NSSortDiscriptor用于密钥creationDate和升序false到sortDescriptors数组。 这样,结果将始终只是最近插入的1条记录。即使这个记录超过了2个月。