var firstName: String = "John Appleseed"
if let name = firstName {
print ("Hello, \(name)")
}
字符串錯誤出現在第二行:初始化器有條件的結合必須有可選的類型,而不是「字符串」錯誤:初始值設定條件的結合必須有可選的類型,而不是「字符串」
如何決定是否使用可選或非可選變量?
var firstName: String = "John Appleseed"
if let name = firstName {
print ("Hello, \(name)")
}
字符串錯誤出現在第二行:初始化器有條件的結合必須有可選的類型,而不是「字符串」錯誤:初始值設定條件的結合必須有可選的類型,而不是「字符串」
如何決定是否使用可選或非可選變量?
首先,讓我們考慮if let
結構的意思。當你寫
if let name = firstName {
print ("Hello, \(name)")
}
你告訴斯威夫特要
firstName
name
"Hello, \(name)"
換句話說,這個構造用於處理可選變量的解包。然而,變量firstName
是而不是可選;沒有任何東西可以解開,導致Swift抱怨。
var firstName: String? = "John Appleseed"
if let name = firstName {
print ("Hello, \(name)")
}
add ?
使其成爲可選項。
檢查answer in this link知道在哪裏使用可選的,什麼是它實際上是
希望這將有助於:)
請注意,如果這是實際的生產代碼,因此,如果您在定義它時知道'firstName'的值,並且您知道它始終有一個值,那麼它肯定應該是非可選的。 – Hamish
錯誤說明了這一切...你不能使用可選綁定('如果讓...')與非可選。請將'String'更改爲'String?',或完全取消可選綁定(取決於這是僅用於演示代碼還是實際代碼) – Hamish