在 Objc 中定义的枚举 > 在 Swift 中声明 > 在 Objc 中使用
enum defined in Objc > Declared in Swift > to be used in Objc
我有个情况。如果有人对此有解决方案,我将不胜感激
- 我有一个 objC
enum
说 Abc
- 我在 swift class 中将其声明为
MySwiftClass.swift
var abc : Abc!
- 我在另一个 ObjC class(myObjC.m 文件)
中创建了一个 MySwiftClass (mySwiftClass
) 实例
- 在 myObjC.m 中,我正在尝试以
mySwiftClass.abc
的方式访问枚举 Abc。
这是抛出一个错误——“属性‘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
则不会。
我有个情况。如果有人对此有解决方案,我将不胜感激
- 我有一个 objC
enum
说Abc
- 我在 swift class 中将其声明为
MySwiftClass.swift
var abc : Abc!
- 我在另一个 ObjC class(myObjC.m 文件) 中创建了一个 MySwiftClass (
- 在 myObjC.m 中,我正在尝试以
mySwiftClass.abc
的方式访问枚举 Abc。
mySwiftClass
) 实例
这是抛出一个错误——“属性‘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
则不会。