【发布时间】:2015-10-12 02:23:09
【问题描述】:
我有一个基本的 UITableviewController、UISearchResultsUpdating,我的数据保存在一个数组中的结构中,如下所示:
import UIKit
import Foundation
class SearchTableViewController: UITableViewController, UISearchResultsUpdating {
struct Melody {
let category : String
let name : String
let location : String
}
let songs = [Melody(category: "Morgen Lieder", name: "Mein Gott! nun ist e# wieder Morgen", location: "Lutheris¡ Gesangbu¡ (Lied 367)"),
Melody(category: "Morgen Lieder", name: "Auf, auf‘ mein Geist! zu loben", location: "Lutheris¡ Gesangbu¡ (Lied 358)"),
Melody(category: "Morgen Lieder", name: "Auf! ermunt‘re di¡ mein Sinn", location: "Lutheris¡ Gesangbu¡ (Lied 455)"),
Melody(category: "Morgen Lieder", name: "Auf! meine Seel‘! und dank‘ dem Herren", location: "Lutheris¡ Gesangbu¡ (Lied 454)"),
Melody(category: "Morgen Lieder", name: "Christe! Wahre# Seelenli¡t", location: "Lutheris¡ Gesangbu¡ (Lied 359)"),
Melody(category: "Morgen Lieder", name: "Da# walte Gott! der mi¡ au# lauter Gnaden", location: "Lutheris¡ Gesangbu¡ (Lied 360)"),
Melody(category: "Morgen Lieder", name: "Die Na¡t ist nun dahin", location: "Lutheris¡ Gesangbu¡ (Lied 361)"),
Melody(category: "Morgen Lieder", name: "Du heilige Dreifältigkeit", location: "Lutheris¡ Gesangbu¡ (Lied 682)"),]
var filteredSongs = [Melody]()
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.resultSearchController.searchBar.sizeToFit()
self.tableView.tableHeaderView = self.resultSearchController.searchBar
self.tableView.reloadData()
}
现在在搜索函数代码和 IF 语句之后,我正在尝试编写一个函数来像这样更新我的 UiSearchController;
func updateSearchResultsForSearchController(sear,chController: UISearchController)
{
self.filteredSongs.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let array = (Melody as NSArray).filteredArrayUsingPredicate(searchPredicate)
self.filteredSongs = array as! [String]
self.tableView.reloadData()
}
但我得到一个错误:“SearchTableViewController.Melody.type”不能转换为“NSArray”就行了
let array = (Melody as NSArray).filteredArrayUsingPredicate(searchPredicate)
那么如何将我的 Struct 转换为 NSArray,或者当我的数据在 Struct 中时如何更新我的 SearchController?
提前致谢!!!!
【问题讨论】:
-
旋律作为 NSArray -> 歌曲作为! NSArray
-
你好,Quang,它仍然不接受它....你能提供完整的代码行作为例子吗?