我向用户展示了一个 TableView ,从某种意义上说,它看起来像联系人 View ,因为数据源是 [String: [User]] 类型的字典,所以我用用户的第一个字母展示部分标题姓名。
现在,我想让他们按用户的名字搜索...但我无法让它工作。
这些是字典…… friend 们将保存这样的数据 ["A":[名字以 A 开头的用户]]
等等
var friends = [String: [User]]()
var filteredFriends = [String: [User]]()
这是我的过滤代码,searchText
是我要搜索的名字
self.filteredFriends = self.friends.filter{friend in
return friend.firstName.lowercased().contains(searchText)}
我想做的是让 filteredFriends
拥有用户名以文本开头的 friends
的所有值。
如何使用像我这样的字典来完成这项工作?
谢谢
更多信息:
Class User {
var firstName: String?
init(name: String){
self.firstName = name
}
}
示例场景:
friends = ["A" : [User(name: "Anthony), User(name: "Arnold")], "B" : [User(name: "Barry")]]
filteredFriends = friends
searchText = "an"
所需的过滤好友(最终结果)= ["A": [User(name: "Anthony)]]
最佳答案
没有简单的方法。你只需要循环遍历整个字典,就像这样:
// these are your initial conditions
class User {
let firstName: String
init(name: String) {
self.firstName = name
}
}
let friends : [String:[User]] =
["A" : [User(name: "Anthony"), User(name: "Arnold")],
"B" : [User(name: "Barry")]]
let searchText = "an"
// and here we go...
var filteredFriends = [String:[User]]()
for entry in friends {
let filt = entry.value.filter{$0.firstName.lowercased().hasPrefix(searchText)}
if filt.count > 0 {
filteredFriends[entry.key] = filt
}
}
现在 filteredFriends
包含所需的结果。
关于swift - [String : [object]] for specific key in object arrays 类型的过滤器字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42279794/