2

我有这个问题,我想不出如何写这个谓词。

我有一个名为 Contact 的实体,它有一个字符串属性“pages”,比如说

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

我的数据库中有很多联系人,我只想获取这些包含某个 id 的联系人。因此,假设我只想获取这些联系人,哪些页面包含 id @“1”。

我能想到这样的事情,

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

但我的问题是这也会获得联系人,例如有 pages = @"11,15"。

那么关于如何实现这一目标的任何想法?如有任何建议,我将不胜感激,在此先感谢!

4

1 回答 1

6

的 "MATCHES" 运算符NSPredicate可用于与正则表达式进行比较:

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

但是您还应该考虑将字符串属性替换为与Page实体的一对多关系,然后谓词看起来像

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY pages.pageid == %@", pageId];
于 2013-02-18T09:55:46.370 回答