从字符串形式NSPredicate包含的ID(Form NSPredicate from strin

2019-07-20 01:45发布

我有这个问题,我想不出该怎么写谓词。

我有一个名为联系的实体,它有一个字符串属性“页”,让我们说

contact.pages = @"1,5,11,15,17";

有很多在我的数据库中的联系人,我想只获取这些接触含有一定的ID。 因此,让我们说,我想只获取这些接触,哪些页面包含ID @“1”。

我能想到的这样的事情,

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self.pages CONTAINS %@", _pageId];

但我的问题是,这也将取得联系,使得例如具有网页= @“11,15”。

因此,对如何实现这一任何想法? 我会的任何建议感激,在此先感谢!

Answer 1:

的“匹配”操作NSPredicate可以用来比较正则表达式:

NSString *pageId = @"1";
NSString *regex = [NSString stringWithFormat:@"(.*,)?%@(,.*)?", pageId];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pages MATCHES %@", regex];

但是,你也应该考虑由一对多关系提升到一个页面实体替换字符串属性,则谓词会是什么样子

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY pages.pageid == %@", pageId];


文章来源: Form NSPredicate from string that contains id's