Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa-筛选tableview上的数组字典_Cocoa_Search_Nsdictionary_Nstableview - Fatal编程技术网

Cocoa-筛选tableview上的数组字典

Cocoa-筛选tableview上的数组字典,cocoa,search,nsdictionary,nstableview,Cocoa,Search,Nsdictionary,Nstableview,我有一个tableview,它有一组字典数据源。现在我想在这个表中做一个过滤器,但是我想能够过滤5个不同的字段,比如姓名、号码、电子邮件等等 我怎么做?我已经找到了一种在数组中进行筛选的方法,但我不知道如何在字典中进行筛选。根据单击的列使用NSPredicateFilter。如果要筛选字典数组,只需使用FilteredarrayingPredicate: NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF.name = %@",

我有一个tableview,它有一组字典数据源。现在我想在这个表中做一个过滤器,但是我想能够过滤5个不同的字段,比如姓名、号码、电子邮件等等


我怎么做?我已经找到了一种在数组中进行筛选的方法,但我不知道如何在字典中进行筛选。

根据单击的列使用
NSPredicateFilter

如果要筛选字典数组,只需使用FilteredarrayingPredicate:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF.name = %@",@"Fabio"];
NSArray *filtered = [myArray filteredArrayUsingPredicate:pred];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF.name = %@ OR SELF.email BEGINSWITH[c] %@",@"Fabio",@"fabio"];
这将为您提供一个数组,其中所有字典的名称值均为Fabio

编辑后:如果要进行更广泛的搜索,可以在谓词中添加“或”,如下所示:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF.name = %@",@"Fabio"];
NSArray *filtered = [myArray filteredArrayUsingPredicate:pred];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF.name = %@ OR SELF.email BEGINSWITH[c] %@",@"Fabio",@"fabio"];

这将为您提供名称为Fabio或电子邮件以Fabio开头的任何词典(或Fabio,[c]参数表示它将匹配大写或不匹配)。

您的表视图中是否只填充了一个词典,或者您正在谈论的是一个词典数组?是一个词典数组。我更新了问题。好的。你说的“搜索”是什么意思?是否要查找特定结果,或尝试筛选数组以在表视图中显示子集?筛选。看来我解释得很糟糕。很抱歉,我会重新编辑我的问题。嗯,这会给我数组的索引,一个nsdictionary,字符串在哪里?比如,如果我在一个数组中有几个字典,每个字典都有相似的名称、电子邮件、数字,不管我放的是fabio还是fabio@email.com或者我的数字,这个数组会给我这个,并显示在表上?不,它不会给你一个索引--它会给你一个新的数组,它只有字典,名字字段是Fabio。而且,不,它不会在电子邮件所在的位置提供任何词典fabio@email.com,只有名字叫法比奥的。如果你想做一个更广泛的搜索,你可以像我在编辑后的答案中显示的那样做。真棒!你救了我一天。我现在就试试,然后再给你回复。我来自前端,所以有些事情对我来说很难做到。多亏了这个社区,我才有能力完成我的工作。谢谢你,勒马尔!很好用!你救了我的命!