swift - 为什么在从 Int 形成字符串时会出现 optional

标签 swift option-type

<分区>

我有这个简单的类:

import UIKit

let builtIn = MyClass(n1: 1)
print("DeviceA: \(builtIn.n1)") // DeviceA Optional(1)

class MyClass: NSObject {
    var n1: Int!

    init(n1: Int) {
        super.init()

        self.n1 = n1
    }
}

为什么控制台上是DeviceA Optional(1)n1 不是可选的?

我可以通过 print("DeviceA:\(builtIn.n1!)") 解决这个问题。但我只是不明白为什么 Optional 在那里。

谢谢,

最佳答案

您已将 n1 声明为隐式展开的可选值:

var n1: Int!

这意味着 n1 仍然是可选的,但您向代码保证它将非零。为了避免可选状态,您需要声明为:

var n1: Int

在这种情况下,您要么需要确保在 init() 函数中对其进行初始化,要么像这样提供默认的初始化:

var n1: Int = 0

关于swift - 为什么在从 Int 形成字符串时会出现 optional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45187931/

相关文章:

swift - Swift 1.2 中的声明不能同时是 'final' 和 'dynamic' 错误

haskell - 对 Maybe 值列表进行操作

swift - 快速编写委托(delegate)引用的不同选项

ios - map 套件位置图像

swift - 如何从两个一维数组输出二维数组?

swift - Realm 中 SQL LEN() 函数的替代方案

ios - 如何在 iOS 10 Swift 3 中初始化 NSFetchedResultsController

swift - 删除强制展开

swift - Swift 中类型和显式展开类型之间的区别

swift - 在 Swift 中将可选字符串转换为可选 Int 的最简单方法