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エンティティとのto-many関係に置き換えることも検討する必要があります。そうすると、述語は次のようになります。

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