Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift选项在为其赋值后返回nil_Swift_Optional - Fatal编程技术网

Swift选项在为其赋值后返回nil

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)

我没有太多快速的经验,所以非常感谢你的耐心。在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)
        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编码时,大多数情况下,一个结构比一个类更受欢迎,它将免费为您提供正确的初始值设定项。您只需要将您的方法声明为变异。