我有一个情况。如果有人有解决方案,我将不胜感激
enum
说Abc
MySwiftClass.swift
var abc : Abc!
mySwiftClass
)的实例mySwiftClass.abc
访问。这会抛出一个错误 - 在MySwiftClass *类型的对象上找不到“属性'abc'。” 基本上,枚举不会作为属性添加到“ProjectName-Swift.h”文件中。
我相信正在发生的事情是,当我在Swift类中声明ObjC枚举时,它会被转换为快速枚举,因此我无法在ObjC文件中访问它。
注意:将Swift类标记为@objc不起作用。
答案 0 :(得分:3)
Numeric Swift选项不能在Objective-C中表示,因此不会暴露给Objective-C。声明abc
不是可选的,它应该可以从Objective-C获得。
考虑这个Objective-C枚举:
typedef NS_ENUM(NSInteger, Foo) {
FooBar,
FooBaz,
FooQux
};
然后考虑这个Swift 3类:
class SomeObject: NSObject {
var foo1: Foo = .bar // this is exposed to Objective-C
var foo2: Foo! = .bar // this is not
}
非可选的foo1
将会暴露给Objective-C,而可选的foo2
则不会。