2015-10-12 37 views
0

我有一個基本的UITableViewController,UISearchResultsUpdating和我的數據保存在一個結構數組內像這樣的查詢一個結構:以更新UisearchController

後的搜索功能的代碼,如果
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() 
    } 

現在發言,我m試圖寫一個函數來更新我的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) 

因此,如何將我的結構轉換爲一個NSArray,或如何當我的數據在Struct中時,是否更新我的SearchController?

在此先感謝!!!!

+0

旋律的NSArray - >歌曲! NSArray –

+0

Hi Quang,它仍然不會接受它....你能提供完整的代碼行嗎? – DavidTschetter

回答

0

替換代碼

let array = (Melody as NSArray).filteredArrayUsingPredicate(searchPredicate) 

let array = songs.filteredArrayUsingPredicate(searchPredicate)