我有一个问题:“我想它为什么有效,但我应该问它来检查我的想法:D。
我有个密码:

let possibleNumber = "1232"

var somevariable : Int

if let actualNumber = Int(possibleNumber) {

    somevariable = actualNumber

} else {
    print("\(possibleNumber) could not be converted to an integer")
}

print(somevariable)

错误:在初始化之前使用了变量“somevariable”
但如果我有这样的东西:
let possibleNumber = "1232"

var somevariable : Int

if let actualNumber = Int(possibleNumber) {

    somevariable = actualNumber

} else {
    somevariable = 0
}

print(somevariable)

它不会有任何问题。
如果我删除else块,它也会出错。无论如何,我的理解是这样的:我不允许你在某个变量可以为零的情况下,因为他的类型不是可选的。
也许我的想法错了,或者你有更好的解释。谢谢你的帮助和良好的链接。
祝你好运!

最佳答案

你的想法是对的

if let actualNumber = Int(possibleNumber)

有可能不是真的,因为else没有赋值,所以错误,而且如果只在else内部赋值,也会得到相同的错误,编译器需要确保值不是nil,因为它不知道哪个块(if或else)将在运行时运行,因此,根据您的条件,您必须使用Int!Int?,但如果值为nil,前者将导致崩溃

关于ios - Swift可选类型的想法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51697409/

10-13 06:58