1

我有一个看起来像这样的 NSPredicate:

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

我将它应用于具有“同义词”属性的类的对象的 NSArray。

当 searchText 是一个完整的单词(例如“Thanks”)时,它可以正常工作。但是,如果我尝试使用带有空格的字符串,例如“谢谢”,则会失败,并且谓词搜索在数组中找不到匹配项。

有没有办法让 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 回答