Приложение в основном рассчитывает ускорение путем ввода начальной и конечной скорости и времени, а затем использует формулу для расчета ускорения. Однако, поскольку значения в текстовых полях являются строковыми, я не могу преобразовать их в целые числа.
@IBOutlet var txtBox1 : UITextField
@IBOutlet var txtBox2 : UITextField
@IBOutlet var txtBox3 : UITextField
@IBOutlet var lblAnswer : UILabel
@IBAction func btn1(sender : AnyObject) {
let answer1 = "The acceleration is"
var answer2 = txtBox1
var answer3 = txtBox2
var answer4 = txtBox3
ios
swift
int
uitextfield
Марван Касем
источник
источник
var answer1 = Int(txtBox1.text)
Ответы:
Основная идея, обратите внимание, что это работает только в Swift 1.x (посмотрите ответ ParaSara чтобы увидеть, как это работает в Swift 2.x):
Обновление для Swift 4
источник
'NSString' does not have a member named 'toInt'
. Любые идеи?NSString
иString
два разных объекта и имеют разные методы.NSString
имеет метод под названием.intValue
Обновить ответ для swift 2.0 :
toInt()
метод выдает ошибку. Потому что в Swift 2.x.toInt()
функция была удалена из String. Вместо этого Int теперь имеет инициализатор, который принимает строку:источник
"\(someInt)"
не хорошоString(someInt)
, намного легче читатьInt(firstText.text)!
а потом все еще вижу необязательно. Почему? Разве я не развернул это?nil
. Может не произойти, если строка поступает из элемента пользовательского интерфейса, как в этом случае. Но один способ предотвратить аварии, чтобы добавить значение по умолчанию в строке:let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- преобразовать строковое значение в int.Swift 3.x
Если у вас есть целое число, скрывающееся внутри строки, вы можете преобразовать его с помощью целочисленного конструктора, например так:
Как и с другими типами данных (Float и Double), вы также можете конвертировать, используя NSString:
источник
редактировать / обновление: Xcode 11.4 • Swift 5.2
Пожалуйста, проверьте комментарии через код
Содержимое файла IntegerField.swift :
Вам также необходимо добавить эти расширения в ваш проект:
Расширения UITextField.swift содержимое файла:
Расширения файла Formatter.swift:
Содержимое файла расширений NumberFormatter.swift :
Содержимое файла расширений StringProtocol.swift :
Пример проекта
источник
Вы можете использовать
NSNumberFormatter().numberFromString(yourNumberString)
. Это здорово, потому что он возвращает необязательный параметр, который вы можете затем проверить,if let
чтобы определить, было ли преобразование успешным. например.Swift 5
источник
Swift 4.0
Вы также можете использовать Необязательное связывание, кроме принудительного связывания.
например:
источник
// Xcode 8.1 и swift 3.0
Мы также можем справиться с этим путем опционального связывания, просто
источник
В Swift 4.2 и Xcode 10.1
источник
Свифт 3
Самый простой и безопасный способ:
Избегайте неправильных значений, устанавливающих тип клавиатуры для цифровой клавиатуры:
источник
В Swift 4:
источник
Я сделал простую программу, в которой у вас есть 2 TXT поля, вы берете ввод данных от пользователя и добавляете их, чтобы было проще понять, пожалуйста, найдите код ниже.
надеюсь это поможет.
источник
Swift 3.0
Попробуйте это, вам не нужно проверять какие-либо условия, я сделал все, просто используйте эту функцию. Отправить что-нибудь строку, число, число с плавающей запятой, двойной, и т. Д.Вы получаете число в качестве значения или 0, если оно не может преобразовать ваше значение
Функция:
Использование: Добавьте указанную выше функцию в код и для преобразования используйте,
let myNumber = getNumber(number: myString)
если уmyString
нее есть число или строка, она возвращает число, иначе возвращает0
Пример 1:
Вывод:
printing number 9834
Пример 2:
Вывод:
printing number 9834
Пример 3:
Вывод:
printing number 9834
источник
Полезно для String to Int и другого типа
Используйте это как:
источник
О int () и Swift 2.x: если после проверки преобразования вы получаете значение nil, если вы пытаетесь преобразовать строку с большим числом (например: 1073741824), в этом случае попробуйте:
источник
Последний swift3 этот код просто для преобразования строки в int
источник
Поскольку строка может содержать нечисловые символы, вы должны использовать
guard
для защиты операции. Пример:источник
Я недавно получил ту же проблему. Вот решение для меня:
источник
Использовать этот:
ИЛИ
Сделайте ваш UITextField KeyboardType как DecimalTab из вашей XIB или раскадровки и удалите любое условие if для выполнения каких-либо вычислений, т.е.
Поскольку тип клавиатуры - DecimalPad, нет возможности ввести другие 0-9 или.
Надеюсь, это поможет!
источник
источник
Это работает для меня
источник
для Swift3.x
источник
для альтернативного решения. Вы можете использовать расширение нативного типа. Вы можете проверить с детской площадкой.
"2" .Добавьте (1)
источник
Мое решение состоит в том, чтобы иметь общее расширение для преобразования строки в int.
источник
источник
Вопрос: строку «4.0000» нельзя преобразовать в целое число с помощью Int («4.000»)?
Ответ: строка проверки Int () является целым числом или нет, если да, тогда вы получите целое число, в противном случае ноль. но Float или Double могут конвертировать любую числовую строку в соответствующий Float или Double без нуля. Пример, если у вас есть целочисленная строка «45», но использование Float («45») дает вам значение 45,0 с плавающей запятой или использование Double («4567») дает 45,0.
Решение: NSString (строка: "45.000"). IntegerValue или Int (Float ("45.000")!)! чтобы получить правильный результат.
источник
Int в Swift содержит инициализатор, который принимает строку. Возвращает необязательный Int? поскольку преобразование может завершиться неудачей, если строка не содержит число.
Используя оператор if let, вы можете проверить, успешно ли выполнено преобразование.
Итак, ваш код стал примерно таким:
источник
Swift 5.0 и выше
За работой
В случае, если вы разделяете,
String
создается два,substrings
а не дваStrings
. Этот метод ниже будет проверятьAny
и конвертировать его,NSNumber
его легко конвертироватьNSNumber
вInt
,Float
что когда - либо типа данных , которые необходимо.Актуальный код
Применение
Передача,
String
чтобы проверить и преобразовать вDouble
источник
Swift5 float или int строка для int:
источник
Начиная с 3-го , я должен заставить свой #% @! строка & int с "!" в противном случае это просто не работает.
Например:
источник
var counterInt = counter.map { Int($0) }
? Гдеcounter
бы это могло бытьString?
guard
иif let
заявленияПреобразовать строковое значение в целое число в Swift 4
источник