我是学习 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 对我来说很有意义。第二段代码基本相同,只是字符串来自 UITextField 的 text 属性。代码的底部给出以下错误:
操场执行失败:/var/folders/nl/5dr8btl543j51jkqypj4252mpcnq11/T/./lldb/843/playground21.swift:18:18:错误:可选类型“字符串?”的值 未拆封;你的意思是用'!' 或者 '?'?如果让 num = Int(numberString) {
我通过使用这条线解决了这个问题:
if let num = Int(numberString!) {
我只想知道为什么第二个示例需要 ! 而第一个没有。我确定问题与我从文本字段中获取字符串这一事实有关。谢谢!