无法在可选绑定中使用可选 int "possibleNumber"
unable to use optional int "possibleNumber" in optional binding
我是 Swift 的新手,正在尝试学习可选绑定的概念。我想出了以下代码:
let possibleNumber = Int("123")
possibleNumber.dynamicType
if let actualNumber = Int(possibleNumber){
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an int")
}
Xcode playground 输出错误信息:
value of optional type "int?" not unwrapped, did you mean to use "!" or "?"
但是,当我添加“!”至 if let actualNumber = Int(possibleNumber!){
let possibleNumber = Int("123")
possibleNumber.dynamicType
if let actualNumber = Int(possibleNumber!){
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an int")
}
Xcode 显示另一条错误消息:
initialiser for conditional binding must have Optional type, not int
为什么会这样?
在if let
构造中
if let actualNumber = Int(possibleNumber!){
print("\(possibleNumber) has an integer value of \(actualNumber)")
}
您不需要使用 Int
初始值设定项。你只需要写
if let actualNumber = possibleNumber {
print("\(possibleNumber) has an integer value of \(actualNumber)")
}
现在 Swift 将尝试解包 possibleNumber
。如果操作成功,解包后的值将被放入 actualNumber
并执行 THEN
块。
的结果
let possibleNumber = Int("123")
是一个可选的 Int - Int?
那么你正试图用
创建另一个Int
Int(possibleNumber)
这不起作用,因为初始化程序需要一个非可选类型。
错误消息与初始化程序有关,而不是与可选绑定有关。
尝试此操作以获得相同的错误消息。
let possibleNumber = Int("123")
let x = Int(possibleNumber)
在您的第二个示例中,当您使用隐式展开的 Int!
参数初始化 Int
时,您会得到一个非可选的 Int
并且编译器会抱怨缺少可选的。
我是 Swift 的新手,正在尝试学习可选绑定的概念。我想出了以下代码:
let possibleNumber = Int("123")
possibleNumber.dynamicType
if let actualNumber = Int(possibleNumber){
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an int")
}
Xcode playground 输出错误信息:
value of optional type "int?" not unwrapped, did you mean to use "!" or "?"
但是,当我添加“!”至 if let actualNumber = Int(possibleNumber!){
let possibleNumber = Int("123")
possibleNumber.dynamicType
if let actualNumber = Int(possibleNumber!){
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an int")
}
Xcode 显示另一条错误消息:
initialiser for conditional binding must have Optional type, not int
为什么会这样?
在if let
构造中
if let actualNumber = Int(possibleNumber!){
print("\(possibleNumber) has an integer value of \(actualNumber)")
}
您不需要使用 Int
初始值设定项。你只需要写
if let actualNumber = possibleNumber {
print("\(possibleNumber) has an integer value of \(actualNumber)")
}
现在 Swift 将尝试解包 possibleNumber
。如果操作成功,解包后的值将被放入 actualNumber
并执行 THEN
块。
let possibleNumber = Int("123")
是一个可选的 Int - Int?
那么你正试图用
创建另一个Int
Int(possibleNumber)
这不起作用,因为初始化程序需要一个非可选类型。 错误消息与初始化程序有关,而不是与可选绑定有关。
尝试此操作以获得相同的错误消息。
let possibleNumber = Int("123")
let x = Int(possibleNumber)
在您的第二个示例中,当您使用隐式展开的 Int!
参数初始化 Int
时,您会得到一个非可选的 Int
并且编译器会抱怨缺少可选的。