如何使用Swift中的关键词筛选搜索

如何使用Swift中的关键词筛选搜索

问题描述:

我已经意识到使用类别筛选swift表中的搜索,我正在寻找筛选搜索,其中可能有多个关键词用于某个特定搜索。如何使用Swift中的关键词筛选搜索

目前,我有一个类,如下所示:

class Video { 

    var videoName: String 
    var videoTags: [String] 


    init(name: String, tags: [String]) { 
     self.videoName = name 
     self.videoTags = tags 

    } 
} 

据我了解,如果我使用一个字符串变量我可能会给搜索类别,但是在这种情况下有多个标签(即“教程”,“建议”等)。

如何创建一个搜索栏,根据用户输入的关键字在表中显示正确的视频名称?

+0

无关,但那些'vars'可以用'突然想到(喜欢不变性) –

+0

谢谢你,我还是新来这和一般习惯 – Ramorie

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 
+0

简单类型Var取代:'回报videos.filter {视频在video.videoTags.contains(其中:{$ 0.lowercased()== tag.lowercased()})}' – Alexander

+0

@Alexander,只有当关键字等于标签时,您的解决方案才会返回一些值...所以,对于关键字“Tuto”您的解决方案将不会返回(空数组)。这并不简单,这是不同的。 – Dmitry

+1

oops,我不是故意把'.contains()'改成'=='。这是我的第一个评论应该是:'return videos.filter {video in video.videoTags.contains(where:{$ 0.lowercased()。contains(tag.lowercased())})}' – Alexander