2015-04-17 58 views
0

我是SWIFT编程新手,和往常一样,我遇到了问题,也许没什么,但是如果能帮助我了解我的错误,我会很高兴。 对不起,意大利变量的名字,但这个凑近是一个尝试,所以我喜欢在意大利做....SWIFT错误创建搜索栏

import UIKit 

class ListaTableViewController: UITableViewController { 
var listaSpesa = [Alimento]() 
var resultSearchController = UISearchController() //SearchBar 

override func viewDidLoad() { 
    super.viewDidLoad() 
    //inizializzazione di una lista con l'aggiunta di elementi alla lista 
    self.listaSpesa = [ 
     Alimento(categoria: ["Dolci"], nome: "cioccolato"), 
     Alimento(categoria: ["Dolci"], nome: "barrette energetiche"), 
     Alimento(categoria: ["Dolci", "Altro"], nome: "caramelle"), 
     Alimento(categoria: ["Carne","Dolci"], nome: "cotolette"), 
     Alimento(categoria: ["Carne"], nome: "polpette"), 
     Alimento(categoria: ["Altro"], nome: "dentifricio"), 
     Alimento(categoria: ["Altro"], nome: "carta alluminio") 
    ] 

    //aggiorna la tabella ricaricando le funzioni 
    self.tableView.reloadData() 


    //Aggiungo la SearchBar 
    self.resultSearchController = ({ 
     // creo un oggetto di tipo UISearchController 
     let controller = UISearchController(searchResultsController: nil) 

     // il searchResultsUpdater, ovvero colui che gestirà gli eventi di ricerca, sarà la ListaTableViewController (o self) 
     controller.searchResultsUpdater = self 

     // rimuove la tableView di sottofondo in modo da poter successivamente visualizzare gli elementi cercati 
     controller.dimsBackgroundDuringPresentation = false 

     // impongo alla searchBar, contenuta all'interno del controller, di adattarsi alle dimensioni dell'applicazioni 
     controller.searchBar.sizeToFit() 

     // atacco alla parte superiore della TableView la searchBar (la visualizzo) 
     self.tableView.tableHeaderView = controller.searchBar 

     // restituisco il controller creato 
     return controller 
    })() 
} 
} 

这是我有问题的部分,请帮助我,我所到之处说,我已经做了同样的事情... 这是我的错误

controller.searchResultsUpdater = self 

的字符串,这是错误:

(Cannot assign a value of type 'ListaTableViewController' to a value of type 'UISearchResultUpdating?') 

PS 对不起,我的英语^^'

回答

0

UISearchResultUpdating是一个协议。你需要告诉你打算执行,编译器,通过将其在声明类行,

class ListaTableViewController: UITableViewController, UISearchResultUpdating 

你会得到另一个错误,如果你不真正实施该协议所需的方法。

+0

基于我的代码,我该如何解决第二个错误(当我要更新我的类声明时)? 对不起,但正如我sayid我只是在学习它... – Narak

+0

@Narak,你应该看看'UISearchResultUpdating'的文档,并实现它包含的一种方法。 – rdelmar

0

声明UISearchResultUpdating提到后:

class ListaTableViewController: UITableViewController, UISearchResultUpdating 

只要一个未实现所需的功能存在的错误。

func updateSearchResultsForSearchController(searchController: UISearchController) 

It's只是一个令人困惑的错误消息;-)
“ListaTableViewController没有确认到协议UISearchResultUpdating”会更有帮助。