我需要一些帮助才能找出正确的NSPredicate
语法来正确搜索我的数组,如:
CSVFinalData: (
"Width:1,5 Diameter:12 Strength:0,25 Strength:900 Mode:L Spring:371M ",
"Width:2,2 Diameter:6,5 Strength:0,45 Strength:1200 Mode:M Spring:485M ",
"Width:3,5 Diameter:14,5 Strength:0,3 Strength:1600 Mode:M Spring:380M ",
"Width:5 Diameter:7 Strength:0,25 Strength:850 Mode:L Spring:525M ",
"Width:4,2 Diameter:10,2 Strength:0,4 Strength:1200 Mode:S Spring:1232S ",
"Width:3 Diameter:6,8 Strength:0,15 Strength:800 Mode:S Spring:1439S ",
"Width:1 Diameter:4,7 Strength:0,12 Strength:450 Mode:L Spring:129M ",
"Width:7,3 Diameter:15,5 Strength:0,5 Strength:1400 Mode:M Spring:563M "
)
这是我的NSPredicate
:
NSPredicate *csvsearch =
[NSPredicate predicateWithFormat:@"'Width:' MATCHES %@", searchBar.text];
我也尝试过其他一些谓词,但结果每次都是空的。
唯一的例外是searchBar.text
是'宽度:'它会显示每个对象。
我正在使用Xcode 6.1和iOS 8.1。
感谢您的帮助!
@edit:
我用@Larme解决方案玩了一下。 CONTAINS
太不精确了。当搜索{4}的Width
时,它也会找到Diameter
4,2的行。这在理论上应该是正确的:
[NSPredicate predicateWithFormat:@"self CONTAINS 'Width:4,2'"];
让它变得动态我将其改为:
[NSPredicate predicateWithFormat:@"self CONTAINS '%@:%@'", csvHeaderName1, searchBar.text];
但是一旦它充满活力,它就不再工作了,但我不明白为什么:(
csvHeaderName1
有内容"宽度"和searchBar.text
" 4,2"