【发布时间】:2017-01-12 17:21:51
【问题描述】:
我们知道如何将 Swift 枚举暴露给 Obj-C:
@objc enum Animal: Int {
case Cat, Dog
}
但是编译器抱怨以下“不能在 Obj-C 中表示”:
func myAnimal() -> Animal? {
if hasPet() {
return .Cat
} else {
return nil
}
}
想法?
【问题讨论】:
-
在您的枚举中添加
case none? -
错误信息表达了事实。在 Objective-C 中,不能表示非引用类型的 Optional 值。一种可能的解决方法是将
nil-like case 添加到您的枚举中——case none, cat, dog。 -
我发现一个可选的枚举相当有趣。枚举应该代表几种可能的情况之一。使其成为可选添加了一个母亲,隐藏的状态。正如@CodeDifferent 所建议的那样,我会使用
none案例来代替。你我不确定这是否能解决你的问题。
标签: objective-c swift enums