Ви повинні використовувати рідні типи Swift, коли це можливо. Мова оптимізована для їх використання, і більшість функціональних можливостей з'єднані між рідними типами та Foundation
типами.
Хоча String
і NSString
здебільшого є взаємозамінними, тобто ви можете передавати String
змінні в методи, що приймають NSString
параметри, і навпаки, деякі методи, здається, не є автоматично пов'язаними з цього моменту. Дивіться цю відповідь для обговорення того, як отримати довжину рядка, і цю відповідь для обговорення використання containsString()
для перевірки на підрядів. (Відмова: я автор обох цих відповідей)
Я не повністю вивчив інші типи даних, але я припускаю, що деякі версії сказаного вище також будуть справедливими для Array
/ NSArray
, Dictionary
/ NSDictionary
та різних типів чисел у Swift таNSNumber
Щоразу, коли вам потрібно використовувати один із типів Foundation, ви можете або використовувати їх для явного введення змінних / констант, як у, var str: NSString = "An NSString"
або використовувати bridgeToObjectiveC()
на існуючій змінній / константі типу Swift, як, str.bridgeToObjectiveC().length
наприклад, у. Ви також можете String
передати тесту NSString
, використовуючи str as NSString
.
Однак необхідність цих методів явного використання типів Foundation або, принаймні, деяких з них, в майбутньому може бути застарілою, оскільки, наприклад, те, що зазначено в мовній довідці, String
/ NSString
міст, наприклад, повинен бути повністю безпроблемним.
Щоб детально обговорити цю тему, див. Використання Swift з какао та Objective-C: Робота з типами даних какао
String
. ОднакString
функціональність все ще дещо обмежена у випуску альфа-версії, томуNSString
зараз буде використовуватися більше. Ми сподіваємось, що вони виправлять API до GA.