Swift:UISearchBar中Dictionary的多个结果

时间:2017-07-18 11:26:10

标签: ios swift uisearchbar

是否可以在swift中创建一个搜索栏,用户正在搜索字典,用户可以键入列表元素或键本身,搜索栏只会返回键? / p>

换句话说,考虑一下这本词典:

let dict  = [  "primes" : [2,3,5,7] , 
               "even" : [2,4,6,8 ] ,
               "odd" : [1,3,5,7] , 
               "fib" : [1,1,2,3,5]
            ]

如果用户键入7,​​搜索栏将返回素数和奇数

如果用户键入奇数,搜索栏将返回奇数。

1 个答案:

答案 0 :(得分:0)

当用户在搜索栏中输入内容时,将会触发来自textDidChange

UISearchBarDelegate委托功能。 在此功能中,您可以编写过滤器代码。

以下是基于词典的示例。此示例中的结果是字典键。

var filtered:[String] = []

let dict  = [ "primes" : [2,3,5,7] , "even" : [2,4,6,8 ] , "odd" : [1,3,5,7] , "fib" : [1,1,2,3,5] ]

override func viewDidLoad() {
    super.viewDidLoad()
    searchBar.delegate = self
}

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

    // just to reset the array and result text
    filtered = []
    textView.text  = ""

    _ = dict.filter {
        let key = $0;
        _ = $1.filter {
            if ($0 == Int(searchText)) {
                filtered.append(key)
            }
            return true
        }
        return true
    }

    // show results
    textView.text = filtered.description
}