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()
}
4

2 回答 2

1

您已定义self.filteredlist为 SwiftMovieVO类型数组,所以不,您不能为其分配String类型数组。尝试将其转换为一种MovieVO类型或以其他方式将其转换为该类型(也许查看您的定义会很有用MovieVO)。

于 2015-11-17T18:54:17.500 回答
1

你已经声明filteredlistMovieVO你做的数组:

var filteredlist = [MovieVO]()

所以它不能接受[String],只能[MovieVO]

我想不是将您的 NSArray 转换为[String]您想将其转换回[MovieVO]

self.filteredlist = array as! [MovieVO]

并且为了避免崩溃,用可选绑定替换这个强制转换:

if let movies = array as? [MovieVO] {
    self.filteredlist = movies
}
于 2015-11-17T18:54:45.697 回答