З документів виходить, що виклик containsString()
на String повинен працювати:
Тип рядка Swift безперешкодно з'єднаний з класом NSString Foundation. Якщо ви працюєте з основою Foundation в Cocoa або Cocoa Touch, весь API NSString доступний для виклику будь-якого створеного вами String, крім функцій String, описаних у цій главі. Ви також можете використовувати значення String з будь-яким API, для якого потрібен екземпляр NSString.
Однак, схоже, це не працює так.
Якщо ви спробуєте використовувати someString.containsString(anotherString)
, ви отримаєте помилку часу компіляції, яка констатує 'String' does not contain a member named 'containsString'
.
Таким чином, ви залишилися кілька варіантів, один з яких явно з'єднати СВІЙ String
до Objective-C за допомогою bridgeToObjectiveC()
двох інших втягують в явному вигляді при допомоги пристроїв NSString
і кінцевий один включає виливок String
АньNSString
Об’єднавши, ви отримаєте:
var string = "hello Swift"
if string.bridgeToObjectiveC().containsString("Swift") {
println("YES")
}
Ввівши явно рядок у вигляді NSString
, ви отримаєте:
var string: NSString = "hello Swift"
if string.containsString("Swift") {
println("YES")
}
Якщо у вас є існуючий String
, ви можете ініціалізувати з нього NSString, використовуючи NSString (рядок :):
var string = "hello Swift"
if NSString(string: string).containsString("Swift") {
println("YES")
}
І, нарешті, ви можете привласнити існуюче String
до а, NSString
як показано нижче
var string = "hello Swift"
if (string as NSString).containsString("Swift") {
println("YES")
}