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()
}
问问题
1190 次
2 回答
1
您已定义self.filteredlist
为 SwiftMovieVO
类型数组,所以不,您不能为其分配String
类型数组。尝试将其转换为一种MovieVO
类型或以其他方式将其转换为该类型(也许查看您的定义会很有用MovieVO
)。
于 2015-11-17T18:54:17.500 回答
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
}
于 2015-11-17T18:54:45.697 回答