小编典典

Swift:设置协议的可选属性

swift

如何设置协议的可选属性?例如,UITextInputTraits具有许多可选的读/写属性。当我尝试以下操作时,出现编译错误(无法在“
textInputTraits”中分配给“ keyboardType”):

func initializeTextInputTraits(textInputTraits: UITextInputTraits) {
  textInputTraits.keyboardType = .Default
}

通常,在访问协议的可选属性时,您会添加问号,但这在分配值时不起作用(错误:无法分配给该表达式的结果):

textInputTraits.keyboardType? = .Default

该协议如下所示:

protocol UITextInputTraits : NSObjectProtocol {
  optional var keyboardType: UIKeyboardType { get set }
}

阅读 642

收藏
2020-07-07

共1个答案

小编典典

在Swift中是不可能的(还好吗?)。从ADF线程引用:

可选属性要求和返回值的可选方法要求,在访问或调用它们时,将 始终返回 适当类型 的可选值 ,以反映 可能尚未实现
可选要求的事实。

因此,轻松获得可选值也就不足为奇了。但是,设置属性需要 保证 实现。

2020-07-07