Swift过滤多个字典键 [英] Swift filter for multiple dictionary keys
本文介绍了Swift过滤多个字典键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为我的应用制作搜索栏。我正在使用过滤器
方法来获取结果。
字典数组:
var people = [
[First:John,Last:Doe],
[First:Steve,Last:Jobs],
[First:Elon,Last:Musk]
]
我只能搜索First或Last,但不能同时搜索:
searchResults = people.filter {
var string = $ 0 [Last]
//或First
string = string?.lowercaseString
return string!.rangeOfString(searchText.lowercaseString)!= nil
}
解决方案
一种方法是简单地将两个字段与搜索字符串进行比较:
var people = [
[First:JohnMusk,Last:Doe],
[First:Steve,Last:Jobs],
[First:Elon,Last:Musk]
]
var searchText =Musk
var searchResults = people.filter {
var firstName = $ 0 [First] !. lowercaseString
var lastName = $ 0 [Last] !. lowercaseString
返回firstName.rangeOfString(searchText.lowercaseString) !=无
|| lastName.rangeOfString(searchText.lowercaseString)!= nil
}
给我这个结果:
2015-11-18 18:19:47.691 MyPlayground [36558:7031733](
{
First = JohnMusk;
Last = Doe;
},
{
First = Elon;
Last = Musk;
}
)
我相信这就是你想要的。
I'm making a search bar for my app. I'm using the filter
method to get the results. I want to search through multiple keys.
Array of dictionaries:
var people = [
["First": "John", "Last": "Doe"],
["First": "Steve", "Last": "Jobs"],
["First": "Elon", "Last": "Musk"]
]
I am only able to search for either "First" or "Last", but not both, with this code:
searchResults = people.filter{
var string = $0["Last"]
// or "First"
string = string?.lowercaseString
return string!.rangeOfString(searchText.lowercaseString) != nil
}
解决方案
One approach would be to simply compare both fields to the search string:
var people = [
["First": "JohnMusk", "Last": "Doe"],
["First": "Steve", "Last": "Jobs"],
["First": "Elon", "Last": "Musk"]
]
var searchText = "Musk"
var searchResults = people.filter{
var firstName = $0["First"]!.lowercaseString
var lastName = $0["Last"]!.lowercaseString
return firstName.rangeOfString(searchText.lowercaseString) != nil
|| lastName.rangeOfString(searchText.lowercaseString) != nil
}
This gives me this result:
2015-11-18 18:19:47.691 MyPlayground[36558:7031733] (
{
First = JohnMusk;
Last = Doe;
},
{
First = Elon;
Last = Musk;
}
)
Which I believe is what you want.
这篇关于Swift过滤多个字典键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文