【问题标题】:Search nested Array in UISearchbar in swift快速在 UISearchbar 中搜索嵌套数组
【发布时间】:2021-09-18 09:03:46
【问题描述】:

我正在尝试搜索输入文本的嵌套项数组,它同时搜索团队和用户数组并返回一个对象。我可以搜索团队但无法搜索用户嵌套数组。

这是我的代码

// Array
let searchArray = [MyTeam]()

// Search
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchArray = searchArray.filter { ($0.name.range(of: searchString, options: .caseInsensitive) != nil || ($0.users.filter{($0.name.range(of: searchString, options: .caseInsensitive) != nil }) ) }
}

// Model
struct MyTeam: Codable {
    let id: Int
    let name: String
    let users: [MyUser]
}
struct MyUser: Codable {
    let id: Int
    let name: String
}

【问题讨论】:

    标签: ios swift uitableview uisearchbar


    【解决方案1】:

    这里不是在用户数组上使用filter

    $0.users.filter {($0.name.range(of: searchString, options: .caseInsensitive) != nil }
    

    您可以使用contains 方法,该方法将返回Bool

    $0.users.contains { $0.name.range(of: searchString, options: .caseInsensitive) != nil }
    

    所以最终的函数看起来像这样。另外我认为您需要使用searchText 而不是searchString

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        searchArray = searchArray.filter { team in
            team.name.range(of: searchText, options: .caseInsensitive) != nil
                || team.users.contains { user in
                    user.name.range(of: searchText, options: .caseInsensitive) != nil
                }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多