我只是想查一下表视图。我正在使用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创建了nil值。我的两个数组都是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返回[AnyObject],并且您的属性的类型似乎是NSMutableArray。根据偏好,您有几个选择:
将属性更改为Swift数组(例如var nameArray: [String]),而不是NSMutableArray。不用filteredArrayUsingPredicate,只需使用数组的过滤方法:
self.nameArray = self.nameArray.filter({contains($0.lowercaseString, searchText.lowercaseString})
如果必须继续将属性保留为NSMutableArray,则可以使用筛选数组的内容创建NSArray实例:
NSMutableArray(array: self.nameArray.filteredArrayUsingPredicate(resultPredicate))

关于ios - 在Swift中将AnyObject添加到NSMutableArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31641135/

10-13 09:04