По возможности следует использовать собственные типы 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
преобразовать a в объект NSString
с помощью str as NSString
.
Однако необходимость в этих методах явно использовать типы Foundation или, по крайней мере, некоторые из них, может быть устаревшей в будущем, поскольку из того, что указано в справочнике по языку , например, String
/ NSString
мост должен быть полностью бесшовным.
Подробное обсуждение этого вопроса см. В разделах Использование Swift с какао и Objective-C: Работа с типами данных какао.
String
. ОднакоString
в альфа-версии функциональные возможности все еще немного ограничены, поэтому на данный моментNSString
они будут использоваться в большей степени. Надеемся, они исправят API до GA.