ios - UISearchController 在结构中搜索结构数组

标签 ios swift uisearchbar uisearchcontroller

我在类(class)列表中有 2 个结构。

struct Course : Decodable {
let CourseName : String;
let EntryRequirements : String;
}

struct  WebsiteDescription : Decodable {
let FullProgramName :String
let ProgramName : String;
let Courses : [Course]
}

这些结构加载了 JSON

我已经实现了一个 UISearchController 来实际搜索类(class)名称。

我不知道如何从包含类(class)名称的 WebsiteDescription 中引用 Struct Course。

我用来包含 WebsiteDescription 的数组

  var allCourses = [WebsiteDescription]()
  var filteredCourses = [WebsiteDescription]()

我试过用这个方法过滤一下

func updateSearchResults(for searchController: UISearchController) {
    if searchController.searchBar.text! == "" {
        filteredCourses = allCourses
        acTableView.reloadData()
    } else {
        filteredCourses = allCourses.filter { $0.ProgramName.lowercased().contains(searchController.searchBar.text!.lowercased()) }



    }  
    self.acTableView.reloadData();
}

它过滤一般程序名称,但我实际上想使用结构类(class)中的类(class)名称进行过滤。

提前谢谢你。

This is what I currently get

当我搜索 mentoring 时,整个 ShortCourses 部分都出现了,而此时应该只出现“Mentoring”。

指导是类(class)名称

最佳答案

替换这一行

allCourses.filter { $0.ProgramName.lowercased().contains(searchController.searchBar.text!.lowercased())

有了这个

allCourses.filter {
             !$0.Courses.filter{$0.CourseName.localizedCaseInsensitiveContains(searchController.searchBar.text!)}.isEmpty
        }

它会根据结构Course中的CourseName给出结果。

编辑:它会给你 Array of Course

allCourses.flatMap{$0.Courses.filter{$0.CourseName.localizedCaseInsensitiveContains(searchController.searchBar.text!)}}

关于ios - UISearchController 在结构中搜索结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918423/

相关文章:

ios - 使用 UISearchController 取消搜索会导致崩溃

ios - iOS 7/8 上 UITableViewHeader 中的 UISearchBar 奇怪的动画

ios - UIFont线程安全吗?

ios - UIWebView:当应用程序进入后台时,HTML5 音频在 iOS 6 中暂停

ios - 离线 Fairplay AVAssetDownloadTask 在下载时收到未知错误回调(仅发生在 iOS 10.2 上)

string - UISearchBar textDidChange,searchtext 变量无法与 rangeOfString 一起使用?

ios - 警告 : Format string is not a string literal

IOS如何彻底删除一个View

ios - 无法启动 UICollectionViewController

ios - swift 2 : error when try to find with indexOf