Swift选项在为其赋值后返回nil
我没有太多快速的经验,所以非常感谢你的耐心。在swift操场,我有以下代码:Swift选项在为其赋值后返回nil,swift,optional,Swift,Optional,我没有太多快速的经验,所以非常感谢你的耐心。在swift操场,我有以下代码: import Foundation class Test1 { var fav: Int? var test: FavouriteAd? func a() -> Int? { self.fav = 3 self.test?.fav_id = 1212 print("fav_id:",self.test?.fav_id)
import Foundation
class Test1 {
var fav: Int?
var test: FavouriteAd?
func a() -> Int? {
self.fav = 3
self.test?.fav_id = 1212
print("fav_id:",self.test?.fav_id)
return self.fav
}
func add() -> Int? {
self.fav! = self.fav! + 2
return self.fav
}
}
class FavouriteAd {
var fav_id: Int?
var user: Int?
var fav_type: String?
init?() {
}
}
var z = Test1()
z.a()
print(z.add())
var z1 = Test1()
print(z.a())
运行代码会导致:
fav_id: nil
Optional(5)
fav_id: nil
Optional(3)
我的问题是:
fav_id
打印为nil
?通过定义self.test?.fav_id=1212
,这不就是1212
1212
与对象的fav_id
关联?我想用self.test?.fav\u id打开它代码>将产生影响,但它没有。我显然缺乏swift的基本原理,如果有人能解释的话,那就太好了。多谢各位
test
仍然为nil,因此没有任何值可分配给它。您正在使用可选链接,因此当分配新值时,它会自动失败self.test?.fav_id=1212
这意味着如果测试为nil
只需略过感谢您的解释即可。只需添加前面与您的问题无关的行,但您真的需要将您的属性声明为可选属性吗?对于整数,您可以使用.zero
对其进行初始化,对于收藏夹ad
类型,您应该提供适当的初始值设定项。顺便说一句,当用Swift编码时,大多数情况下,一个结构比一个类更受欢迎,它将免费为您提供正确的初始值设定项。您只需要将您的方法声明为变异。