背景:我在做CloudKit开发时遇到一个问题,就是使用OR查询,按说这应该是一个常规操作,但百度一下竟然都搜不到关于该问题的解决办法。最终还是谷歌到的,现在分享给大家。
使用方法
以下代码展示了如何对id
进行了OR
的查询操作,由于CloudKit不支持OR
谓词,只能使用IN
来替代
NSArray * ids = @[@"111", @"222", @"333"];
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"id IN %@", ids];
CKQuery * query = [[CKQuery alloc] initWithRecordType:@"CardBag" predicate:pred];
经过我多次测试,使用了OR
谓词,NSCompoundPredicate
的orPredicateWithSubpredicates:
方法,还有id IN {111, 222, 333}
均不奏效,只有直接[NSPredicate predicateWithFormat:@"id IN %@", ids]
时凑效。记录在此,方便大家查看,也帮助我记忆。