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

时间:2019-06-03 11:29:15

标签: ios 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
    }
  }
}

1 个答案:

答案 0 :(得分:2)

您可以按以下步骤解决此问题,

class SmsEntryPresenter {

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

}

extension SmsEntryPresenter: SmsEntryPresenterProtocol {}