这是用户模型
class User: NSObject, NSCoding {
var userID: String!
var username: String!
var password: String!
var token: String!
override init() {
}
}
var user: User?
user.password = pass
user.username = "foo"
user.userID = "bar"
当我创建user
时,我没有设置token
属性。然后我尝试访问下面示例中的token
。我的理解是这种访问token
的方式只是检查user
是否为零但不检查token
是否为零。
user?.token
我认为这会根据我如何将属性设置为隐式解包的选项而崩溃?
答案 0 :(得分:0)
通常不会崩溃,因为变量user
尚未初始化。 user?.token
看到用户为零,因此结果为零。这称为可选链接。您可以阅读更多here。
如果您希望它崩溃,在尝试访问令牌字段之前,您应该init
User
个对象。
答案 1 :(得分:0)
你没有强行打开任何东西。您已将token
声明为隐式解包,但这并不意味着它被迫解包。可以使用隐式解包的可选项来执行某些操作,例如检查它是否为nil而不打开nil值并崩溃。即使if user!.token == nil
声明为token
,tools:co0-ntext=".MainActivity"
之类的内容也很好。