在 Objc 中定义的枚举 > 在 Swift 中声明 > 在 Objc 中使用

enum defined in Objc > Declared in Swift > to be used in Objc

我有个情况。如果有人对此有解决方案,我将不胜感激

这是抛出一个错误——“属性‘abc’未在 MySwiftClass * 类型的对象上找到”。 基本上,枚举不会作为 属性 添加到“ProjectName-Swift.h”文件中。

我认为发生的事情是,当我在 Swift class 中声明 ObjC 枚举时,它正在转换为 swift 枚举,因此我不是能够在 ObjC 文件中访问它。

注意: 将 Swift class 标记为 @objc 无效。

数字 Swift 可选值不能在 Objective-C 中表示,因此不会暴露给 Objective-C。声明 abc 不是可选的,它应该可以从 Objective-C 获得。

考虑这个 Objective-C 枚举:

typedef NS_ENUM(NSInteger, Foo) {
    FooBar,
    FooBaz,
    FooQux
};

然后考虑这个 Swift 3 class:

class SomeObject: NSObject {
    var foo1: Foo  = .bar          // this is exposed to Objective-C
    var foo2: Foo! = .bar          // this is not
}

非可选 foo1 将公开给 Objective-C,而可选 foo2 则不会。