我有这个问题,我想不出该怎么写谓词。
我有一个名为联系的实体,它有一个字符串属性“页”,让我们说
contact.pages = @"1,5,11,15,17";
有很多在我的数据库中的联系人,我想只获取这些接触含有一定的ID。 因此,让我们说,我想只获取这些接触,哪些页面包含ID @“1”。
我能想到的这样的事情,
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self.pages CONTAINS %@", _pageId];
但我的问题是,这也将取得联系,使得例如具有网页= @“11,15”。
因此,对如何实现这一任何想法? 我会的任何建议感激,在此先感谢!
的“匹配”操作NSPredicate
可以用来比较正则表达式:
NSString *pageId = @"1";
NSString *regex = [NSString stringWithFormat:@"(.*,)?%@(,.*)?", pageId];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pages MATCHES %@", regex];
但是,你也应该考虑由一对多关系提升到一个页面实体替换字符串属性,则谓词会是什么样子
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY pages.pageid == %@", pageId];