为什么我的班级变量不能更改为文本框的文本?

时间:2019-08-13 14:57:45

标签: swift class

我正在编写一个简单的函数,旨在将某些文本框的内容写入类实例中的变量中。

当我尝试打印文本框的内容时,它可以工作。内容在那里。

我尝试将文本框连接到运行该功能的按钮。

以下是一些父类和子类:

cleanSource

功能如下:

...
WHERE Group IN ('01', '02') 
    AND ImgLink <> '' 
    AND Qty > 0 
    AND NOT (Description = 'cat') OR QtyPO > 0
...

目标是显示具有随机样式的说唱名称,其中包含文本框的内容。

但是,仅返回随机说唱名称样式中的原始初始化变量。

因此,例如,如果形容词的文本框包含“小”,而名称正确的文本框包含“ wiggles”,并且选择了随机样式littlerichardstyle,则标签应显示“ little wiggles”,而仅显示“形容词” “名称正确”(来自初始化程序)。

非常感谢

1 个答案:

答案 0 :(得分:0)

您应该使RapNameStyle中的所有var成为计算属性:

class RapNameStyle: RapName {
    var twoChainzStyle: (String, String, String)? {
        return (numberProper, " ", noun)
    }
    var tinyTimTheRapperStyle: (String, String, String, String, String)? {
        return (adjective, " ", nameProper, " the ", noun)
    }
    // Same for others
    var allStyles: [Any]? {
        return [twoChainzStyle!, bigSnitchStyle!, crunchyBlackStyle!, tinyTimTheRapperStyle! as Any, zaeTheBlacksmithStyle!,
         littleRichardStyle!,drDreStyle!, poetPeteStyle!, notoriousBIGStyle!, flavaFlavStyle!, mrHappyStyle!, captainPotatoStyle!, stevensShakinStyle!]
    }
}

然后init()就是super.init()

考虑以下非常简单的示例:

class ASuper {
    var top: Int

    init() {
        top = 1
    }
}

class BSub: ASuper {
    var under: Int?
    var all: [Any]?

    override init() {
        super.init()
        self.under = 10
        self.all = [under!]
    }

}

let b = BSub()
b.under = 200

print(b.all!)

您得到[10],而不是[200] 当将b.under的值更改为200时,所有值均未重新评估,仍然为[10]。它将带有一个计算得出的变量。