Итак, я могу сделать это:
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
Но я не могу найти способ сделать это ж / д String
. Я бы хотел сделать что-то вроде:
var stringNumb: String = "1357"
var someNumb: Int = Int(stringNumb)
Это тоже не работает:
var someNumbAlt: Int = myString.integerValue
var someNumb: Int? = Int(stringNumb)
илиvar someNumb = Int(stringNumb)
Ответы:
Swift 2.0 вы можете инициализировать Integer с помощью конструктора
источник
toInt()
метода как частиString
. Таким образом,Int
теперь этот конструктор - единственный способ преобразовать строки в целые числа.Я бы использовал:
Примечание
toInt()
:источник
var someNumb: Int = stringNumber.toInt()!
как указал @NateCook!
на вызов, вы можете объявить переменную как опция:someNumb: Int? = stringNumber.toInt()
. Тогда система безопасности типа будет знать, чтоfoo
может не существовать. Ввод!
, конечно же, выйдет из строя, если ваша строка не может преобразоваться в число.В Swift 3.0
Тип 1: преобразование NSString в строку
Тип 2: если строка имеет только целое число
Тип 3: если строка имеет значение с плавающей запятой
источник
stringToFloat
is!= nil
вы должны использоватьif let
.Метод, который вам нужен,
toInt()
- вы должны быть немного осторожны, посколькуtoInt()
возвращает необязательный Int.источник
toInt()
это правильный способ сделать это.Если вы можете использовать
NSString
только.Это очень похоже на цель-с. Все типы данных есть, но требуют
as NSString
добавленияТакже у нас есть
toInt()
добавленная функция. См. Apple Inc. «Язык программирования Swift». интерактивные книги. https://itun.es/us/jEUH0.l стр. 49источник
as NSString
. исправил @gwcoffeyприведенный выше ответ мне не помог, так как мое строковое значение было "700.00"
со Swift 2.2 это работает для меня
Я передал myInt в NSFormatterClass
Благодаря этому сообщению в блоге.
источник
Double()
тот же способ, что и мыInt()
. Нет необходимости использовать мост для NSString.Double()
затем использоватьInt()
. Как это:if let d = Double("700.00") { let i = Int(d); print (i) }
:)Вы можете перейти от String к NSString и преобразовать из CInt в Int следующим образом:
источник
Я написал расширение для этой цели. Это всегда возвращает
Int
. Если строка не помещается в строкуInt
, возвращается 0.источник
return self.toInt() ?? 0
. Вероятно, лучше просто написать это таким образом, чем использовать метод расширения для этого.Более общим решением может быть расширение
это, например, расширяет быстрый собственный объект String на toFloat
источник
Преобразование String в Int в Swift 2.0:
использование
.intergerValue or intValue for Int32
источник
Коэффициент 8: 1 (*)
или
Int(String)
возвращает необязательныйInt?
, а не файлInt
.Безопасное использование: не разворачивать явно
или
(*) Ни один из ответов на самом деле не объяснял, почему
var someNumb: Int = Int(stringNumb)
не работает.источник
Простой, но грязный способ
Путь расширения
На самом деле это лучше, потому что он отлично сочетается с локализацией и десятичными знаками.
Теперь вы можете просто сделать:
источник