基于 Key 和 Predicates 对 NSMutableArray 进行排序不起作用?

Posted

技术标签:

【中文标题】基于 Key 和 Predicates 对 NSMutableArray 进行排序不起作用?【英文标题】:Sorting NSMutableArray based on Key with Predicates not working? 【发布时间】:2016-02-12 14:12:28 【问题描述】:

我有一个包含 150 多个对象的 NSMutableArray,我需要根据与输入名称匹配的这个键“名称”创建一个新数组。

所以我从 *** 得到了这个谓词代码

    NSMutableArray *listForm=[[NSMutableArray alloc]init]; //copy Original Array
    listForm=[arr valueForKey:@"data"]; //copied
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == [c] %@", [selectedDrug valueForKey:@"name"]]; //checking name 

    NSLog(@"%@",[selectedDrug valueForKey:@"name"]); //my input name for matching

    [listForm filteredArrayUsingPredicate:predicate];  


    NSLog(@"%@",listForm);//final result

现在得到了正确的结果,但随之而来的是额外的对象

例如喜欢 考虑一下这是我的大对象列表

[
  name:"john",
  location:"washington",
  age:23
,
  name:"Zirad kan",
  location:"iceland",
  age:23
,
  name:"john",
  location:"usa",
  age:43
,
  name:"riya",
  location:"india",
  age:20
,
  name:"Rachel",
  location:"netherland",
  age:33
,
  name:"john Mark",
  location:"washington",
  age:23
,
  name:"john Doe",
  location:"washington",
  age:23
]

从这里我需要所有名称与“john”完全匹配

所以结果会是这样的

 [
      name:"john",
      location:"washington",
      age:23
    ,
      name:"john",
      location:"usa",
      age:43
    ]

但是当我使用上面的代码时,我得到了这个作为最终结果

 [
      name:"john",
      location:"washington",
      age:23
    ,
      name:"john",
      location:"usa",
      age:43
    ,
      name:"john Mark",
      location:"washington",
      age:23
    ,
      name:"john Doe",
      location:"washington",
      age:23
    ]

我怎样才能删除“John Doe”和“John Mark”,就像我只需要一个匹配“john”的特定文本一样。

请帮帮我

【问题讨论】:

看到这个链接可能对你有帮助***.com/questions/11597508/… predicateWithBlock:? 【参考方案1】:

[NSArray filteredArrayUsingPredicate:] 返回过滤后的数组,所以:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == [c] %@",
    selectedDrug[@"name"]]; 
NSArray *filtered = [arr[@"data"] filteredArrayUsingPredicate:predicate];  

注意:这里假设 arrselectedDrug 都是 NSDictionary 实例。

【讨论】:

让我自己试试这个

以上是关于基于 Key 和 Predicates 对 NSMutableArray 进行排序不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

NSM 可变数据。为啥保留计数 1 比我预期的要高?

lightdb22.4-新增优化器提示cardinality 和ordered_predicates

lightdb22.4-新增优化器提示cardinality 和ordered_predicates

Dapper Extensions Predicates

福利来了:纳雷科技发布大陆雷达最新测试工具NSM_CAR Tools,免费试用

利用ORDERED_PREDICATES优化多个自定函数作为WHERE过滤条件