如何使用Swift中的关键词筛选搜索
我已经意识到使用类别筛选swift表中的搜索,我正在寻找筛选搜索,其中可能有多个关键词用于某个特定搜索。如何使用Swift中的关键词筛选搜索
目前,我有一个类,如下所示:
class Video {
var videoName: String
var videoTags: [String]
init(name: String, tags: [String]) {
self.videoName = name
self.videoTags = tags
}
}
据我了解,如果我使用一个字符串变量我可能会给搜索类别,但是在这种情况下有多个标签(即“教程”,“建议”等)。
如何创建一个搜索栏,根据用户输入的关键字在表中显示正确的视频名称?
import UIKit
class Video {
var videoName: String
var videoTags: [String]
init(name: String, tags: [String]) {
self.videoName = name
self.videoTags = tags
}
}
var videos: [Video] = [Video(name: "First Video", tags: ["First", "Advice"]),Video(name: "Second Video", tags: ["Second", "Tutorial"]), Video(name: "Third Video", tags: ["Third", "Tutorial"])]
func filterVideos(tag: String)-> [Video] {
return videos.filter { (video) -> Bool in
for _tag in video.videoTags {
if _tag.lowercased().contains(tag.lowercased()) {
return true
}
}
return false
}
}
let filtered = filterVideos(tag: "Tuto") // <= this will contain Second Video And Third Video
简单类型Var取代:'回报videos.filter {视频在video.videoTags.contains(其中:{$ 0.lowercased()== tag.lowercased()})}' – Alexander
@Alexander,只有当关键字等于标签时,您的解决方案才会返回一些值...所以,对于关键字“Tuto”您的解决方案将不会返回(空数组)。这并不简单,这是不同的。 – Dmitry
oops,我不是故意把'.contains()'改成'=='。这是我的第一个评论应该是:'return videos.filter {video in video.videoTags.contains(where:{$ 0.lowercased()。contains(tag.lowercased())})}' – Alexander
无关,但那些'vars'可以用'突然想到(喜欢不变性) –
谢谢你,我还是新来这和一般习惯 – Ramorie