[英]Cannot assign a value of type '[String]' to a value of type '[MovieVO]' - Swift
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()
}
您已將self.filteredlist
定義為MovieVO
類型的Swift數組,因此不能,您不能為其分配String
類型的數組。 嘗試將其轉換為MovieVO
類型,或者將其轉換為該類型(也許對查看MovieVO
的定義MovieVO
)。
在執行以下操作時,您已將filteredlist
聲明為MovieVO
的數組:
var filteredlist = [MovieVO]()
因此它不能接受[String]
,只能接受[MovieVO]
。
我想不是將NSArray強制轉換為[String]
而是要將其[MovieVO]
為[MovieVO]
:
self.filteredlist = array as! [MovieVO]
為了避免崩潰,請使用可選綁定替換此強制轉換:
if let movies = array as? [MovieVO] {
self.filteredlist = movies
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.