繁体   English   中英

Swift:类类型没有成员

[英]Swift: Class Type does not have member <var>

我有以下代码片段:

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

谢谢,

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`
    }     
}

缺点是您必须访问以结构名称为前缀的静态属性-但我想这是一个可以接受的折衷方案。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM