【问题标题】:NSPredicate filteringNSPredicate 过滤
【发布时间】:2017-03-29 21:47:13
【问题描述】:

我将以下 json 对象存储为self.pElements。我有一个search bar 用于根据name 过滤项目。

[
 {"id":"1","name":"Baked Chicken","category":"1","price":"5.49"},
 {"id":"2","name":"Beef Kabob","category":"2","price":"5.49"},
 {"id":"3","name":"Beef Gyro","category":"1","price":"5.49"},
 {"id":"4","name":"Lamb Gyro","category":"4","price":"5.49"} 
] 

我尝试如下过滤name,但它总是返回null。即使我只输入Beef,也没有返回任何内容

pTempElements =[[NSMutableArray alloc] initWithArray:[self.pElements filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name = %@", self.searchBar.text]]];

【问题讨论】:

  • 所有“name”值都不等于“Beef”。
  • name = => 这意味着“完美匹配”。您可能想用name BEGINSWITH[c] 替换它([c] 不区分大小写,以便“牛肉”没问题。
  • 你能举个小例子吗?如果用户只输入Gyro 怎么办?
  • @hotspring 是否只显示包含 Gyro 的名称?

标签: ios objective-c nspredicate


【解决方案1】:

如果要过滤包含搜索字符串的字符串,请使用contains[cd]

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", searchText];

有关可以进行的各种字符串比较的列表,请参阅谓词编程指南中的Predicate Format String Syntax: String Comparisons

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多