0

の属性を持つ Core Data エンティティ フィールドがありますID。ID == 1、2、または 3 のすべての Field エンティティを検索したい。

次のような長い追加文字列を作成せずに、配列を NSPredicate に追加するにはどうすればよいですか。

NSArray *IDArray = @[@1, @2, @3];

NSMutableString *predicateString = [NSMutableString string];

for (NSNumber *ID in IDArray) {
    [predicateString appendString:[NSString stringWithFormat:@"ID == %@, ID]];
}
4

1 に答える 1

2

これはうまくいくはずです:

NSArray *IDArray = @[@1, @2, @3];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ID IN %@", IDArray];

注意:文字列書式設定関数を使用して述語を結合しないでください。使用する

 [NSCompoundPredicate orPredicateWithSubpredicates:...]

および同様の方法。その理由は、文字列と述語では、書式指定子の展開方法が異なる規則を持つためです。

于 2013-03-06T18:12:40.833 に答える