Objective c Objc中定义的枚举>;以Swift格式申报>;用于Objc

Objective c Objc中定义的枚举>;以Swift格式申报>;用于Objc,objective-c,swift,enums,objc-bridging-header,Objective C,Swift,Enums,Objc Bridging Header,我有个情况。如果有人能解决这个问题,我将不胜感激 我有一个objCenumsayAbc 我在一个swift类中声明它,比如说,MySwiftClass.swiftasvar-abc:abc 我已经在另一个ObjC类(myObjC.m文件)中创建了myswitclass(myswitclass)的实例 在myObjC.m中,我试图以mySwiftClass.Abc的形式访问enum Abc 这将引发一个错误-“在MyswitClass*类型的对象上找不到属性'abc'。 基本上,枚举没有作为属

我有个情况。如果有人能解决这个问题,我将不胜感激

  • 我有一个objC
    enum
    say
    Abc
  • 我在一个swift类中声明它,比如说,
    MySwiftClass.swift
    as
    var-abc:abc
  • 我已经在另一个ObjC类(myObjC.m文件)中创建了myswitclass(
    myswitclass
    )的实例
  • 在myObjC.m中,我试图以
    mySwiftClass.Abc
    的形式访问enum Abc
这将引发一个错误-“在MyswitClass*类型的对象上找不到属性'abc'。 基本上,枚举没有作为属性添加到“ProjectName Swift.h”文件中

我认为发生的是,当我在Swift类中声明ObjC枚举时,它正在转换为Swift枚举,因此我无法在ObjC文件中访问它


注意:将Swift类标记为@objc不起作用。

数字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
将不暴露于Objective-C