Я новичок в изучении Swift, поэтому решил, что я мог бы также изучить Swift 2. Все до сих пор имело для меня смысл, за исключением следующего фрагмента кода. Надеюсь, кто-то может пролить свет на это для меня.Как использовать необязательное связывание в 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 книги и это имеет смысл для меня, как он использует опциональное связывание, чтобы преобразовать строку в междунар. Вторая часть кода в основном такая же, за исключением того, что строка исходит из свойства text UITextField. Нижняя часть кода дает следующее сообщение об ошибке:
исполнение площадка не удалось: /var/folders/nl/5dr8btl543j51jkqypj4252mpcnq11/T/./lldb/843/playground21.swift:18:18: Ошибка: значение по желанию тип 'String?' не разворачивается; вы хотели использовать '!' или '?'? если пусть Num = Int (numberString) {
Я исправил проблему с помощью этой строки:
if let num = Int(numberString!) {
Я просто хочу знать, почему второй пример нуждается! а первое - нет. Я уверен, что проблема связана с тем, что я получаю строку из текстового поля. Благодаря!
Не забудьте принять ответ, если он решит вашу проблему :-) – Fogmeister
Спасибо! Раньше я использовал этот сайт, но никогда не задавал вопрос. Ваш ответ был очень полезным. – jobber80
добро пожаловать в StackOverflow :-) рад, что я смог помочь. – Fogmeister