gpt4 book ai didi

ios - 如何在 Swift 中搜索字典内部

转载 作者:可可西里 更新时间:2023-11-01 01:02:58 24 4
gpt4 key购买 nike

在我的 UITableView 中,我有带有头像图像和姓氏(UIImage 和标签)的单元格。我想在我的 UITableView 中搜索。因此,当我输入用户名或姓氏时,它会显示用户名和头像图像。

现在,我可以使用下一个代码在数组内部进行搜索:

var rosters = [String: UIImage]()
var displayNames = [String]()
var filteredTableData = [String]()

// Here I remove all elements from the array and add to it user display name and avatar
rosters.removeAll(keepCapacity: false)
for user in OneRoster.buddyList.fetchedObjects! {
var roster = OneRoster.userFromRosterForJID(jid: user.jidStr)
var image = OneChat.sharedInstance.xmppvCardAvatarModule?.photoDataForJID(roster?.jid)

rosters[user.displayName] = UIImage(data: image!)!
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> onlineUserCell {
let cell:onlineUserCell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! onlineUserCell

if (self.resultSearchController.active) {
cell.username.text = filteredTableData[indexPath.row]
//cell.avatarImage.image = images[indexPath.row]

return cell
}
}


func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredTableData.removeAll(keepCapacity: false)
displayNames.removeAll(keepCapacity: false)

let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)

for (name, image) in rosters {
displayNames.append(name)

let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let array = (displayNames as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
}

let array = (displayNames as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]

self.tableView.reloadData()
}

因此,这段代码只在名字姓氏中搜索,没有头像图像。我想,我可以使用字典,如:

var users = [UIImage: String]()

然后按字符串搜索并在单元格中显示为 UIImage 和字符串。但是我搜索了很多并找不到如何搜索,后来我可以通过字符串搜索并使用 UIImage 获得结果。

有什么想法吗?

最佳答案

可以通过访问字典中的值并像这样搜索它们来完成搜索字典

var users = [UIImage: String]()
let values = Array(users.values)

然而,这种字典的使用似乎有点不对,因为我猜你永远不会根据 UIImage 查找值。

那么您应该使用的是一个元组或一个包含 UIImage 和 String 的类

var users = [(image:UIImage,name:String)]()

然后您可以像这样简单地过滤值

users.filter { (element:(image:UIImage, name:String)) -> Bool in
return element.name.containsString(searchfrase)
}

关于ios - 如何在 Swift 中搜索字典内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com