Я новичок в изучении Swift, поэтому решил, что лучше изучу Swift 2. Пока для меня все имеет смысл, за исключением следующего фрагмента кода. Надеюсь, кто-нибудь сможет пролить свет на это для меня.
//: Playground - noun: a place where people can play
import UIKit
//Works
let possibleNumber="2"
if let actualNumber = Int(possibleNumber) {
print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
}
else {
print("could not be converted to integer")
}
//Doesn't Work and I'm not sure why
let testTextField = UITextField()
testTextField.text = "2"
let numberString = testTextField.text //I know this is redundant
if let num = Int(numberString) {
print("The number is: \(num)")
}
else {
print("Could not be converted to integer")
}
Верхняя часть кода взята прямо из электронной книги Apple Swift 2, и мне понятно, как она использует необязательную привязку для преобразования строки в int. Второй фрагмент кода в основном такой же, за исключением того, что строка берется из свойства text UITextField. Нижняя часть кода дает следующую ошибку:
Выполнение игровой площадки не удалось: /var/folders/nl/5dr8btl543j51jkqypj4252mpcnq11/T/./lldb/843/playground21.swift:18:18: ошибка: значение необязательного типа 'String?' не развернутый; вы хотели использовать '!' или '?'? если let num = Int (numberString) {
Я исправил проблему, используя эту строку:
if let num = Int(numberString!) {
Я просто хочу знать, зачем во втором примере! а первый - нет. Я уверен, что проблема связана с тем, что я получаю строку из текстового поля. Спасибо!