.toInt() удален в Swift 2?

Я работал над приложением, которое использовало текстовое поле и переводило его в целое число. Ранее мой код

textField.text.toInt() 

работал. Теперь Swift объявляет это ошибкой и говорит мне сделать

textField.text!.toInt()

и он говорит, что нет toInt() и попробовать использовать Int(). Это тоже не работает. Что только что произошло?


person Amit Kalra    schedule 09.06.2015    source источник


Ответы (5)


В Swift 2.x функция .toInt() была удалена из String. Взамен Int теперь есть инициализатор, который принимает String

Int(myString)

В вашем случае вы можете использовать Int(textField.text!) вместо textField.text!.toInt()

Свифт 1.x

let myString: String = "256"
let myInt: Int? = myString.toInt()

Swift 2.x, 3.x

let myString: String = "256"
let myInt: Int? = Int(myString)
person Jojodmo    schedule 09.06.2015
comment
как именно я могу использовать это? мой .text.toInt() На самом деле у меня нет текста, что бы я поместил внутрь Int() ? - person Amit Kalra; 09.06.2015
comment
@AmitNivedanKalra Вы можете использовать Int(.text) - person Jojodmo; 09.06.2015
comment
@Jojodmo, вам следует избегать принудительного развертывания. Вы должны использовать let myInt = Int(myString) ?? 0 - person Leo Dabus; 09.06.2015
comment
Я прямо сказал ему сделать Int(lolField.text!), что помогло. - person Amit Kalra; 18.06.2015
comment
Проблема с Int(textField.text!) заключается в том, что если textField.text равно nil, вы получите сообщение об ошибке. - person alondono; 29.09.2015
comment
@alondono Если вы не знаете, какой будет ввод, вы можете использовать Int(textField.text ?? "0") ?? 0 - person Jojodmo; 29.09.2015
comment
@Jojodmo Почему вы использовали myInt: Int? когда вы знаете, что ваш ввод - это строка из строки выше. Разве этого не будет достаточно? пусть myInt = Int (myString). Я просто пытаюсь понять. - person Sam B; 09.10.2015
comment
@SamB Int(String) — неудачный инициализатор. Хотя вы знаете входную строку и используете Int(256)! было бы хорошо, например, он не разворачивается, потому что на самом деле вы не будете знать, является ли ввод числом или нет - person Jojodmo; 09.10.2015

Свифт 2

let myString: NSString = "123"
let myStringToInt: Int = Int(myString.intValue)

объявите свою строку как объект NSString и используйте метод получения intValue

person toddsalpen    schedule 02.03.2016
comment
хорошо, у вас есть это решение, но я также являюсь разработчиком Objective-C, и для меня так знакомо использование объекта NS, но ваша идея крутая. :) - person toddsalpen; 13.04.2016

Достаточно просто создать собственный метод расширения, чтобы вернуть это обратно:

extension String {
    func toInt() -> Int? {
        return Int(self)
    }
}
person Nathan    schedule 03.02.2017

У меня было то же самое в приложениях для обработки платежей. Свифт 1.0

let expMonth = UInt(expirationDate[0].toInt()!)
let expYear = UInt(expirationDate[1].toInt()!)

После в Swift 2.0

let expMonth = Int(expirationDate[0])
let expYear = Int(expirationDate[1])
person Swikar    schedule 17.03.2016

Это тоже дало мне несколько ошибок!

Этот код решил мои ошибки

let myString: String = dataEntered.text!  // data entered in textField
var myInt: Int? = Int(myString)    // conversion of string to Int

myInt = myInt! * 2  // manipulating the integer sum,difference,product, division 

finalOutput.text! = "\(myInt)"  // changes finalOutput label to myInt
person ЯOMAИ    schedule 07.12.2015