来自objective-c的swift中的可选枚举

时间:2016-02-01 16:26:35

标签: objective-c swift

我有一个在objective-c中定义的协议。它有一个enum属性。 我想创建一个实现此协议的swift类,我希望swift类使enum字段可选。 我无法对枚举类型使用nullable注释。 如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

Objective-C中的枚举永远不会nil,因为它们始终默认为0,因为它们不是引用类型。

因此,你不能让属性永远 - nil来实现协议,同时在swift中使它成为可选的(例如可以为空)。

如果你有时需要属性可以为空的nullable,那么你可能需要重新设计你的体系结构(例如协议的层次结构,让它有一个可选的)。

答案 1 :(得分:0)

如果您希望您的字段是可选字段,则可以为其指定默认值。不确定你的代码是什么样的,但是这样的东西应该有效:

func mySwiftMethod(firstParameter: String, enumParameter: MyEnum = MyEnumDefaultValue)

这样,swift调用可以用默认值替换参数,而不必包含它。但是,该值不能为零,因为枚举实际上是NSInteger值。

希望这会有所帮助:)