在 Swift 中将 AnyObject 添加到 NSMutableArray
Adding AnyObject to NSMutableArray in Swift
我只是想进行 Tableview 搜索。我正在使用 NSPredicate
进行搜索。
每个教程的人都给出了这行代码:
let resultPredicate = NSPredicate(format: "SELF contains[c] %@", searchText)
self.nameArray = self.nameArray.filteredArrayUsingPredicate(resultPredicate)
但在第二行 Xcode 说:Cannot assign a value of type '[AnyObject]' to a value of type 'NSMutableArray'
我尝试转换,但这次 xcode 创始零价值。我的两个数组都是 NSMutableArray
。有什么建议吗?
编辑
我的手机密码:
let cell:ItemsTVCell = tableView.dequeueReusableCellWithIdentifier("CELL") as! ItemsTVCell
if tableView == self.searchDisplayController?.searchResultsTableView {
cell.itemNameLabel.text = filteredArray[indexPath.row] as? String
} else {
cell.itemNameLabel.text = nameArray[indexPath.row] as? String
}
return cell
filteredArrayUsingPredicate
returns [AnyObject],看起来你的 属性 是 NSMutableArray 类型。您有几个选项,按优先顺序排列:
将您的 属性 更改为 Swift 数组(例如 var nameArray: [String]
)而不是 NSMutableArray。不使用filteredArrayUsingPredicate
,直接使用数组的过滤方法:
self.nameArray = self.nameArray.filter({contains([=13=].lowercaseString, searchText.lowercaseString})
如果您必须继续将 属性 保留为 NSMutableArray,您可以使用过滤数组的内容创建一个 NSArray 实例:
NSMutableArray(array: self.nameArray.filteredArrayUsingPredicate(resultPredicate))
我只是想进行 Tableview 搜索。我正在使用 NSPredicate
进行搜索。
每个教程的人都给出了这行代码:
let resultPredicate = NSPredicate(format: "SELF contains[c] %@", searchText)
self.nameArray = self.nameArray.filteredArrayUsingPredicate(resultPredicate)
但在第二行 Xcode 说:Cannot assign a value of type '[AnyObject]' to a value of type 'NSMutableArray'
我尝试转换,但这次 xcode 创始零价值。我的两个数组都是 NSMutableArray
。有什么建议吗?
编辑
我的手机密码:
let cell:ItemsTVCell = tableView.dequeueReusableCellWithIdentifier("CELL") as! ItemsTVCell
if tableView == self.searchDisplayController?.searchResultsTableView {
cell.itemNameLabel.text = filteredArray[indexPath.row] as? String
} else {
cell.itemNameLabel.text = nameArray[indexPath.row] as? String
}
return cell
filteredArrayUsingPredicate
returns [AnyObject],看起来你的 属性 是 NSMutableArray 类型。您有几个选项,按优先顺序排列:
将您的 属性 更改为 Swift 数组(例如
var nameArray: [String]
)而不是 NSMutableArray。不使用filteredArrayUsingPredicate
,直接使用数组的过滤方法:self.nameArray = self.nameArray.filter({contains([=13=].lowercaseString, searchText.lowercaseString})
如果您必须继续将 属性 保留为 NSMutableArray,您可以使用过滤数组的内容创建一个 NSArray 实例:
NSMutableArray(array: self.nameArray.filteredArrayUsingPredicate(resultPredicate))