Ви повинні використовувати рідні типи 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.