Swift: панель поиска localizedCaseInsensitiveContainsString не работает или ошибка

Попытка поиска с использованием localizedCaseInsensitiveContainsString и получение следующего сообщения об ошибке.

* Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "-[__NSCFString localizedCaseInsensitiveContainsString:]: нераспознанный селектор отправлен экземпляру 0x1702297a0"

var guests = [Guest]() 
var guestresults = [Guest]()

func searchBar(searchBar: UISearchBar!, textDidChange searchText: String!) {
    guestresults = guests.filter {
        ($0.firstname as NSString).localizedCaseInsensitiveContainsString("\(searchText)")
        //($0.firstname as NSString) == searchText
    } 
}

Но когда я использую сравнение, работает

($0.firstname as NSString) == searchText

Это xcode 6 beta 4 Спасибо.


person nothingtonil    schedule 28.07.2014    source источник


Ответы (1)


localizedCaseInsensitiveContainsString был представлен в iOS 8/OS X 10.10, поэтому

(str1 as NSString).localizedCaseInsensitiveContainsString(str2)

вылетает с исключением «неопознанный селектор» на iOS 7. Но вы можете заменить его эквивалентным

(str1 as NSString).rangeOfString(str2, options: .CaseInsensitiveSearch).location != NSNotFound

который работает обратно в iOS 2.0.

person Martin R    schedule 28.07.2014