ios - NSPredicate 过滤字典数组(Swift)

标签 ios arrays swift dictionary nspredicate

我正在尝试学习 NSPredicate 的精彩世界,但在实际应用中失败了。任何指导表示赞赏。

特别是,我想使用 NSPredicate 来过滤字典数组。例如,采用以下数组并将其过滤为仅包含“species”==“dog”的条目。

 var arrayofDictionary:[[String:String]] = [

      ["name": "Ben", "species": "human"], 
      ["name": "Harp", "species": "dog"], 
      ["name": "Guinness", "species": "dog"]

 ]

现在我知道如何按以下方式过滤,但我的理解是这是一种“懒惰”的方式,在进行大型计算时不会运行得那么快:

 let filteredArray = arrayofDictionary.filter { $0["species"] == "dog" }.flatMap { $0 }

所以我一直在玩 NSPredicate,感觉下面的内容可能是一个很好的起点,但我不确定接下来如何使用它。另外,也许这只适用于数组而不适用于字典?

 let speciesPredicate = NSPredicate(format: "species == %@", "dog")

感谢您的帮助!


我只能在 Objective-C 中找到这方面的指导 here .不幸的是,我才刚刚开始学习 Swift。

这是 a good tutorial on NSPredicate开始全神贯注,但我不知道如何完全实现上述案例。

最佳答案

请检查一下

var customerNameDict = ["firstName":"karthi","LastName":"alagu","MiddleName":"prabhu"];
var clientNameDict = ["firstName":"Selva","LastName":"kumar","MiddleName":"m"];
var employeeNameDict = ["firstName":"karthi","LastName":"prabhu","MiddleName":"kp"];


var attributeValue = "karthi";
var arrNames:Array = [customerNameDict,clientNameDict,employeeNameDict];
var namePredicate =NSPredicate(format: "firstName like %@",attributeValue);


let filteredArray = arrNames.filter { namePredicate.evaluateWithObject($0) };
println("names = ,\(filteredArray)");

关于ios - NSPredicate 过滤字典数组(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446851/

相关文章:

ios - View Controller 之间的 TableView 单元格操作

c# - Xamarin 没有已安装的配置文件与已安装的 iOS 签名身份匹配

ios - 如何构建图形多维数组

ios - 如何在 Swift 3 中设置 UIButton 的图像?

c - 内联不同维度匿名数组的多维指针初始化

swift - 使用prepareForSegue传递数据不起作用

ios - 为什么我的谷歌登录在我成功登录后不显示帐户选择?

ios - Xcode 10 Alamofire 命令 PhaseScriptExecution 失败,退出代码非零

c++ - 如何将二维数组的指针作为函数的参数

C++ 重组数组以填补空白?