1

次のような NSPredicate があります。

NSPredicate *likePredicate3= [NSPredicate predicateWithFormat:@"synonyms LIKE[cd] %@",[NSString stringWithFormat:@"%@", searchText]];

「同義語」プロパティを持つクラスのオブジェクトの NSArray に適用します。

searchText が「Thanks」などの単語全体の場合は正常に機能します。ただし、'Thank you' などのスペースを含む文字列を使用しようとすると失敗し、述語検索で配列内の一致が見つかりません。

NSPredicate に空白を含む単語を処理するように依頼する方法はありますか?

ありがとう。

4

1 に答える 1

2

原則として、あなたがしていることはうまくいくはずです。この例を実行しました:

NSString *search = @"a b";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF LIKE[cd] %@", 
                          [NSString stringWithFormat:@"%@", search]];
NSArray *array = [[NSArray arrayWithObjects:@"a b", @"ä B", @"ccc", nil]
                  filteredArrayUsingPredicate: predicate];
NSLog(@"result: %@", array);

出力は次のとおりです。

Running…
2010-02-04 20:05:41.770 predicate2[74163:a0f] result: (
    "a b",
    "\U00e4 b"
)

たぶん、あなたの searchString はあなたが思っているものとは違う...

于 2010-02-04T19:08:12.577 に答える