在 swift 中搜索 UISearchbar 中的嵌套数组

Search nested Array in UISearchbar in swift

我正在尝试搜索一个嵌套项目数组,在其中输入文本并搜索团队和用户数组以及 returns 一个对象。我可以搜索团队但无法搜索用户嵌套数组。

这是我的代码

// Array
let searchArray = [MyTeam]()

// Search
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchArray = searchArray.filter { ([=11=].name.range(of: searchString, options: .caseInsensitive) != nil || ([=11=].users.filter{([=11=].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
}

而不是在此处的用户数组上使用 filter

[=10=].users.filter {([=10=].name.range(of: searchString, options: .caseInsensitive) != nil }

您可以使用 contains 方法 return Bool

[=11=].users.contains { [=11=].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
            }
    }
}