Swift中的可选枚举来自Objective-C

3

我有一个在Objective-C中定义的协议。它有一个枚举属性。 我想创建一个实现该协议的Swift类,并且希望Swift类的枚举字段是可选的。 我无法使用nullable注释来标记枚举类型。 如何解决这个问题?


1
也许可以使用"MyEnum.Unset"来表示"未知"的情况并跳过该情况? - Larme
你是如何创建枚举的?在Swift中还是Objective-C中? - Sumeet
在Objective-C中使用NS_ENUM宏。 - TpoM6oH
2个回答

7

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

因此,在Swift中,您无法同时使属性从不为nil实现协议并使其可选(例如可为空)。

如果您需要该属性有时可为空,则可能需要重新设计架构(例如协议层次结构),以使其成为可选的。


0
如果您希望使您的字段可选,您可以给它一个默认值。不太确定您的代码是什么样子的,但类似以下内容应该可以运行:
func mySwiftMethod(firstParameter: String, enumParameter: MyEnum = MyEnumDefaultValue)

这样,Swift 调用可以将参数替换为默认值,您无需包含它。但是,该值不能为 nil,因为枚举实际上是一个 NSInteger 值。

希望这能帮助到您 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接