[英]Cannot assign a value of type AnyObject to a value of type String
我有一個函數,該函數返回一個AnyObject數組:
public func xmppRosterDidEndPopulating(sender: XMPPRoster?) {
let jidList = OneChat.sharedInstance.xmppRosterStorage.jidsForXMPPStream(OneChat.sharedInstance.xmppStream)
contacts = jidList
}
我有一個數組: var contacts = [AnyObject]()
稍后,我想在這些值中運行搜索功能:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
filtered = contacts.filter({ (text) -> Bool in
let tmp: NSString = text as! NSString
let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
return range.location != NSNotFound
})
if(filtered.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.tableView.reloadData()
}
但它返回我錯誤:
Cannot assign a value of type AnyObject to a value of type String
在
filtered = contacts.filter({ (text) -> Bool in
我怎么解決這個問題?
filter
方法返回與輸入類型相同的數組。 在這種情況下,由於contacts
是[AnyObject]
,它將返回[AnyObject]
。
如果您只處理字符串,那么最好的方法是更改contacts
的聲明以表示字符串並轉換jidList
以提供字符串數組...
if let jidList = OneChat.sharedInstance.xmppRosterStorage.jidsForXMPPStream(OneChat.sharedInstance.xmppStream) as? [String] {
contacts = jidList
} else {
// handle failure to convert to string array
}
然后,過濾代碼應按原樣工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.