【发布时间】:2017-05-05 19:37:30
【问题描述】:
我正在用 Swift 构建一个应用程序,并且我有一个视图控制器,我将在 2 个地方使用它来显示非常相似但有一些细微差别的屏幕。
我有一个名为 myProtocol 的协议,并且我有一个视图控制器,它具有一个名为 viewModel 的属性,它遵循该协议。 viewModel 可以是 aViewModel 或 bViewModel 的实例,但它们都具有来自协议的相同方法,但根据使用视图控制器的位置返回不同的值。
现在,在objective-c中我可以做到
@property (nonatomic, strong) id <myProtocol>viewModel
然后可以将其设置为viewModel = [aViewmodel new] 或viewModel = [bViewmodel new]。我怎样才能在 swift 中实现类似的目标?
我尝试将属性添加为let viewModel: myProtocol? = nil,但这会给出一个错误,指出它无法推断类型。只是想知道你们是否能给我一些建议。我是 swift 新手,但已经使用 Objective-c 几年了
【问题讨论】: