【发布时间】:2017-12-25 15:26:24
【问题描述】:
我是 Swift 语言的新手,所以玩 Playground。
正如我的标题所说,从字典数组中搜索结果的最佳方法是什么?
例如
以下是我为学习目的创建的数组。
let array = [
["name": "Amit", "age": "27", "rollno": 12],
["name": "Ananad", "age": "26", "rollno": 10],
["name": "Kashyap", "age": "25", "rollno": 11],
["name": "Raj", "age": "25", "rollno": 07],
["name": "Akshya", "age": "28", "rollno": 13]
]
我想根据用户输入搜索“姓名”。看看下面我做了什么。
let strSeach = "k"
let searchResult = myArray.filter{String(($0["name"] as! String).characters.prefix(strSeach.characters.count)).lowercased() == strSeach.lowercased()}
print("index => \(searchResult)")
输出为:
searchResult => [["rollno": 11, "name": "Kashyap", "age": "25"]]
但是困惑,这是正确的搜索方式吗?我用了characters.prefix,lowercased() 是好还是其他最好的方法?
如果我想应用多个搜索,例如按“姓名”、“年龄”等搜索,那么我们如何在 swift 过滤器中实现它?
我认为我们不能将 NSPredicate 与 Swift Array 一起使用?否则,我们可以按照
let searchPredicate = NSPredicate(format: "name CONTAINS [c] %@ OR age CONTAINS [c]", strSeach)
像这样!
【问题讨论】:
标签: ios arrays swift cocoa-touch filter