Ios 无法指定类型为';[字符串]';设置为类型为';[电影]';-敏捷的

Ios 无法指定类型为';[字符串]';设置为类型为';[电影]';-敏捷的,ios,swift,uisearchresultscontroller,Ios,Swift,Uisearchresultscontroller,您已将self.filteredlist定义为MovieVO类型的快速数组,因此不能为其分配String类型的数组。尝试将其强制转换为MovieVO类型,或者将其转换为该类型(也许可以查看您对MovieVO的定义)。您在执行以下操作时已将filteredlist声明为MovieVO的数组: class ListViewController: UITableViewController, UISearchResultsUpdating { var list = [MovieVO]()

您已将
self.filteredlist
定义为
MovieVO
类型的快速数组,因此不能为其分配
String
类型的数组。尝试将其强制转换为
MovieVO
类型,或者将其转换为该类型(也许可以查看您对
MovieVO
的定义)。

您在执行以下操作时已将
filteredlist
声明为
MovieVO
的数组:

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()
}
所以它不能接受
[String]
,只能接受
[MovieVO]

我想你不是想把你的NSArray放回
[String]
而是想把它放回
[MovieVO]

var filteredlist = [MovieVO]()
为避免崩溃,请使用可选绑定替换此强制强制转换:

self.filteredlist = array as! [MovieVO]

你能在这里写解析代码吗?我很抱歉。我不明白你的回答。请帮帮我。没有什么要补充的,我的答案中已经有固定代码了。仔细阅读。:)
if let movies = array as? [MovieVO] {
    self.filteredlist = movies
}