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

标签 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)

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

我需要为 WmBuildGroupsTask 类创建单例吗?

我也尝试编写 class var mUfn:UpdateUIFromNativeListenerItf?

但是得到:Class var not yet supported

谢谢,

最佳答案

Swift 类(目前)不支持静态存储属性,但它们在结构中。所以你可以创建一个内联私有(private)结构并在那里定义你的静态属性:

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

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

    // ...

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

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

还有一个很明显的解决方法:把class变成struct,很明显,提一下就够了。只是一个考虑因素:结构和类不可互换,它们各有利弊。

关于Swift:类类型没有成员 <var>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142509/

相关文章:

ios - 如何识别目标 View Controller 上的 segue 标识符?

swift - 如何在 'pure' Swift 中创建一个弱协议(protocol)引用(没有@objc)

ios - 使用 Core Graphics 绘图时 PDF 文件显示不正确

ios - 使用物理体创建 SKSprite 节点的函数

ios - 如何在 Swift 中将日期选择器添加到 UIAlertController(UIAlertView)?

swift - 一对多关系核心数据获取数据

ios - 在 TableView 中显示文本

swift - 离开增强现实 View 后删除 _SCNSnapshotWindow

ios - 如何停止从另一个 ViewController 播放音频?

iOS - TableViewCell 中的并排标签对象