无法为[AnyObject]类型赋值为NSMutableArray类型的值

时间:2015-12-11 17:56:00

标签: ios swift

我试图使用NSPredicate获取搜索结果,但是当我尝试使用filteredArrayUsingPredicate时它会发生冲突,因为它返回AnyObject。我已经评论了我尝试的方法,因为它没有返回正确的结果。

var contacts: NSMutableArray = []
var filteredContacts: NSMutableArray = []

func newFilteringPredicateWithText(text: String) -> NSPredicate {
    return NSPredicate(format:"SELF contains[cd] %@", text);
}
func contactPickerTextViewDidChange(textViewText: String!) {

    if (textViewText == "") {
        self.filteredContacts = self.contacts;
    }
    else {
        var predicate: NSPredicate = self.newFilteringPredicateWithText(textViewText)
        self.filteredContacts = self.contacts.filteredArrayUsingPredicate(predicate)
        //var temp = NSMutableArray(array: self.contacts.filteredArrayUsingPredicate(predicate))
        //self.filteredContacts = temp
    }
    self.tableView.reloadData()
}

1 个答案:

答案 0 :(得分:2)

NSMutableArrayAnyObject无关,因此您无法轻易预测该类型。

我建议使用原生的Swift解决方案

var contacts: Array<String> = []
var filteredContacts: Array<String> = []

func contactPickerTextViewDidChange(textViewText: String!) {

  if textViewText.isEmpty {
    filteredContacts = contacts
  }
  else {
    filteredContacts = contacts.filter {$0.rangeOfString(textViewText, options: [.CaseInsensitiveSearch, .DiacriticInsensitiveSearch]) != nil }
  }
  tableView.reloadData()
}