2015-11-17 4 views
0
class ListViewController: UITableViewController, UISearchResultsUpdating { 

    var list = [MovieVO]() 
    var filteredlist = [MovieVO]() 
    var resultSearchController = UISearchController() 

func updateSearchResultsForSearchController(searchController: UISearchController) 
{ 
    self.filteredlist.removeAll(keepCapacity: false) 

    let searchPredicate = NSPredicate(format: "title CONTAINS[c] %@", searchController.searchBar.text!) 
    let array = (self.list as NSArray).filteredArrayUsingPredicate(searchPredicate) 


    self.filteredlist = array as! [String] => Cannot assign a value of type '[String]' to a value of type '[MovieVO]' 

    self.tableView.reloadData() 
} 

ответ

1

Вы определили self.filteredlist как Swift массив MovieVO типов, так что нет, вы не можете присвоить ему массив из String типов. Попробуйте применить его к типу MovieVO или иным образом преобразовать его в этот тип (возможно, было бы полезно увидеть ваше определение MovieVO).

1

Вы объявили filteredlist как массив MovieVO когда вы сделали:

var filteredlist = [MovieVO]() 

Так что не может принять [String], только [MovieVO].

Я думаю, вместо литья ваш NSArray к [String] вы хотите, чтобы бросить его обратно [MovieVO]:

self.filteredlist = array as! [MovieVO] 

И, чтобы избежать аварии, заменить это вынужденное отливать с дополнительным обязательным:

if let movies = array as? [MovieVO] { 
    self.filteredlist = movies 
} 
+0

вы можете Напишите здесь решенный код? я прошу прощения. я не понимаю вашего ответа. пожалуйста помогите. –

+0

Нечего добавить, фиксированный код уже в моем ответе. Прочтите внимательно. :) – Moritz

Смежные вопросы