我有一个在objective-c中定义的协议。它有一个enum属性。
我想创建一个实现此协议的swift类,我希望swift类使enum字段可选。
我无法对枚举类型使用nullable
注释。
如何解决这个问题?
答案 0 :(得分:3)
Objective-C中的枚举永远不会nil
,因为它们始终默认为0
,因为它们不是引用类型。
因此,你不能让属性永远 - nil
来实现协议,同时在swift中使它成为可选的(例如可以为空)。
如果你有时需要属性可以为空的nullable,那么你可能需要重新设计你的体系结构(例如协议的层次结构,让它有一个可选的)。
答案 1 :(得分:0)
如果您希望您的字段是可选字段,则可以为其指定默认值。不确定你的代码是什么样的,但是这样的东西应该有效:
func mySwiftMethod(firstParameter: String, enumParameter: MyEnum = MyEnumDefaultValue)
这样,swift调用可以用默认值替换参数,而不必包含它。但是,该值不能为零,因为枚举实际上是NSInteger
值。
希望这会有所帮助:)