繁体   English   中英

在Swift中将类属性添加到协议

[英]Add class property to protocol in Swift

我想要一个具有变量的协议。 符合该协议的类应像“普通”变量一样使用它。 我想要的是这样的:

protocol MyProtocol {
var foo: Int
}

class A {}
extension A: MyProtocol {
  var foo: Int!
}

上面的代码无法编译,我只想显示我想要实现的点。

我结束了这个,但是我想必须有更好的方法:

enum NextController {
  case AuthSelection
  case Main
}

protocol SmsEntryPresenterProtocol {
  var nextController: NextController { get set }
}

class SmsEntryPresenter {

  var _nextController: NextController!
  weak var view: SmsEntryViewProtocol?

}

extension SmsEntryPresenter: SmsEntryPresenterProtocol {

  var nextController: NextController {
    get {
      return _nextController
    }
    set {
      _nextController = newValue
    }
  }
}

您可以按以下方式解决此问题,

class SmsEntryPresenter {

    var nextController: NextController = .Main
    weak var view: SmsEntryViewProtocol?

}

extension SmsEntryPresenter: SmsEntryPresenterProtocol {}

暂无
暂无

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

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