Swift:如何对数组中结构的子值使用 UISearchResultsUpdating?

Posted

技术标签:

【中文标题】Swift:如何对数组中结构的子值使用 UISearchResultsUpdating?【英文标题】:Swift: How can I use UISearchResultsUpdating on child values of structs in an array? 【发布时间】:2016-03-29 18:28:48 【问题描述】:

在这个 UITableViewController 我有一个这样的结构数组:

struct UserItem 

let key: String!
let displayName: String!
let profilePictureUrl: String!
let ref: Firebase!

    init(snapshot: FDataSnapshot) 
        key = snapshot.key
        displayName = snapshot.value["displayName"] as! String
        profilePictureUrl = snapshot.value["profileImage"] as! String
        ref = snapshot.ref
    

我有一个使用 UISearchResultsUpdating 类的搜索栏:

func updateSearchResultsForSearchController(searchController: UISearchController)

我要做的是在 UserItem.displayName 属性的搜索栏中使用 NSPredicate 过滤掉 UserItem 对象的数组。

我最近的尝试是将所有 .displayName 值放在一个 [String] 数组中,然后将其过滤到一个新的 [String] 数组中,但这对我来说似乎有点混乱。我想简单地过滤 [UserItem] 数组。

我需要 UserItem 数组,以便我可以将我的 segue 中的唯一用户 ID 与用户配置文件进行比较。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

你必须使用谓词吗?如果没有,您可以使用闭包轻松过滤结构数组,如下所示:

let filteredUserItems = userItems.filter  return $0.displayName.lowercaseString.containsString(searchValue.lowercaseString) 

【讨论】:

这正是我在网上搜索的内容,非常感谢。

以上是关于Swift:如何对数组中结构的子值使用 UISearchResultsUpdating?的主要内容,如果未能解决你的问题,请参考以下文章

使用两个匹配的子值从关联数组中删除元素

如何使用 for 循环将列表中的子值相互比较?

如何使用JS根据组合框中的子值设置值?

无法自动更新表格视图中的子值

Firebase 和 Swift 如何按子值提取特定记录?

根据特定的子值获取 json 值