Ben*_*Ben 2 arrays dictionary nspredicate ios swift
我正在尝试学习NSPredicate的美好世界,但是在实际应用中却失败了。任何指导表示赞赏。
特别是,我想使用NSPredicate过滤字典数组。例如,采用以下数组并将其过滤为仅包含“ species” ==“ dog”的那些条目。
var arrayofDictionary:[[String:String]] = [
["name": "Ben", "species": "human"],
["name": "Harp", "species": "dog"],
["name": "Guinness", "species": "dog"]
]
Run Code Online (Sandbox Code Playgroud)
现在,我知道如何按照以下方式进行过滤,但是我的理解是这是“懒惰”的方式,并且在进行大型计算时运行速度不会很快:
let filteredArray = arrayofDictionary.filter { $0["species"] == "dog" }.flatMap { $0 }
Run Code Online (Sandbox Code Playgroud)
所以我一直在玩NSPredicate,觉得以下内容可能是一个不错的起点,但不确定下一步如何使用它。另外,也许这仅适用于数组而不适用于字典?
let speciesPredicate = NSPredicate(format: "species == %@", "dog")
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我只能在Objective-C来找到这个指导这里。不幸的是,我只是开始学习Swift。
这是关于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)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8480 次 |
| 最近记录: |