NSPredicate by creationDate,只得到第一个结果
Posted
技术标签:
【中文标题】NSPredicate by creationDate,只得到第一个结果【英文标题】:NSPredicate by creationDate, only get first result 【发布时间】:2014-11-12 00:29:16 【问题描述】:我正在尝试找出一种方法来使用 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】:您可以通过使用将 resultsLimit 设置为 1 的 CKQueryOperation 来解决此问题。 对于查询,您可以只使用 truepredicate。 在查询中为键创建日期添加一个 NSSortDiscriptor 并将 false 升序添加到 sortDescriptors 数组。 这样,结果将始终是最近插入的 1 条记录。即使这个记录早于 2 个月。
【讨论】:
以上是关于NSPredicate by creationDate,只得到第一个结果的主要内容,如果未能解决你的问题,请参考以下文章