简体   繁体   English

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

[英]Add class property to protocol in Swift

I want to have a protocol that have a variable. 我想要一个具有变量的协议。 And class that conform to that protocol should use it like "normal" variable. 符合该协议的类应像“普通”变量一样使用它。 What i want is something like: 我想要的是这样的:

protocol MyProtocol {
var foo: Int
}

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

Code above not compile, i only want to show point i want to achieve. 上面的代码无法编译,我只想显示我想要实现的点。

I ended up with this, but i suppose there must be better way: 我结束了这个,但是我想必须有更好的方法:

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

You can fix this as below, 您可以按以下方式解决此问题,

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