【问题标题】:Use getter and setter in swift to set variable extension [duplicate]在swift中使用getter和setter来设置变量扩展[重复]
【发布时间】:2018-04-04 19:03:30
【问题描述】:

我想为 SKSpriteNode 设置一个值。因此,我对 SKSpriteNode 进行了扩展,名为 HAKEK

我试过了

var HAKEK: Int {
        get {
            return self.HAKEK

        }
        set {
            self.HAKEK = newValue

        }
    }

但它不起作用,因为它不断返回它自己,那么我如何让它获得它自己在 setter 中设置的值?

【问题讨论】:

标签: ios swift sprite-kit


【解决方案1】:

您不能像其他人提到的那样在扩展中创建存储属性。通常我会同意其他人使用关联对象,但使用SKNode,可以使用更好的属性。 它被称为userData,旨在允许您的节点保存自定义数据。

extension SKSpriteNode
{
    var HAKEK: Int {
        get {
            return self.userData?["HAKEK"] ?? 0

        }
        set {
            self.userData = self.userData ?? [String:AnyObject]()
            self.userData["HAKEK"] = newValue

        }
    }
}

当然,如果此属性不适用于所有 SKSpriteNode,我不会扩展 SKSpriteNode。如果这是一个特殊情况,您可能需要子类,这意味着甚至不需要此扩展。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多