使用Swift搜索基于搜索文本的数组

Nas*_*sif 4 xcode dictionary filter ios swift

我是斯威夫特的新手,我有一个新项目.我正在尝试搜索功能.我有一个字典数组,包含firstName和lastName作为键,我需要根据包含搜索字符串的firstName过滤掉人员

let nameList : [Dictionary<String,String>] = 
[["firstName" : "John Sam","lastName" : "Smith"],
["firstName" : "Johnny","lastName" : "Smith"],
["firstName" : "Albert","lastName" : "Smith"],
["firstName" : "Alby","lastName" : "Wright"],
["firstName" : "Smith","lastName" : "Green"]]
Run Code Online (Sandbox Code Playgroud)

在目标C中我可以很容易地做到

[NSPredicate predicatewithformat:"firstName contains[c] %@",searchText] 
Run Code Online (Sandbox Code Playgroud)

我也明白同样的谓词可以在Swift上完成.但我正在寻找一个等效的Swift,这样我就可以获得如何使用map和filter.任何帮助赞赏

Mar*_*n R 12

"CONTAINS[c]"可以rangeOfString()使用以下.CaseInsensitiveSearch选项实现与谓词运算符对应的搜索:

let searchText = "MITH"

let filtered = nameList.filter {
    return $0["firstName"]?.rangeOfString(searchText, options: .CaseInsensitiveSearch) != nil
}

// Result: [[firstName: Smith, lastName: Green]]
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

let filtered = nameList.filter {
    return $0["firstName"]?.range(of: searchText, options: .caseInsensitive) != nil
}
Run Code Online (Sandbox Code Playgroud)