Swift:类类型没有成员<var> </var>

时间:2014-10-01 13:26:04

标签: swift

我有以下代码段:

protocol UpdateUIFromNativeListenerItf {
    func triggerUI()
}

class WmBuildGroupsTask{

var mUfn:UpdateUIFromNativeListenerItf?

  init(){/* ... */}

 // ...

 class func triggerRegister( ufn: UpdateUIFromNativeListenerItf ) {   
        mUfn = ufn // WmBuildGroupsTask.Type does not have `mUfn`
  }     
} 

形成我打电话的其他课程:

var ufn:UpdateUIFromNativeListenerItf = self    
WmBuildGroupsTask.triggerRegister(ufn)

如何将委托传递给静态方法?

我是否需要为课程WmBuildGroupsTask创建单身?

我还试着写class var mUfn:UpdateUIFromNativeListenerItf?

但是得到:Class var not yet supported

谢谢,

2 个答案:

答案 0 :(得分:4)

swift类(尚未)支持静态存储属性,但它们在结构中。因此,您可以创建内联私有结构并在那里定义静态属性:

class WmBuildGroupsTask{
    private struct Static {
        static var mUfn:UpdateUIFromNativeListenerItf?
    }

    init(){/* ... */}

    // ...

    class func triggerRegister( ufn: UpdateUIFromNativeListenerItf ) {
        Static.mUfn = ufn // WmBuildGroupsTask.Type does not have `mUfn`
    }     
}

缺点是你必须访问带有结构名称前缀的静态属性 - 但我想这是一个可以接受的权衡。

还有另一种明显的方法可以解决这个问题:将类转换为结构,很明显只需提及它就足够了。只是一个考虑:结构和类不可互换,它们各有利弊。

答案 1 :(得分:0)

您正尝试在静态上下文中访问成员变量。 mUfn存储在您的类的实例中,而不是类本身。