我已在EnumsHeader.h
文件中创建了一个Objective-C枚举,并将其导入<Module>-Bridging-Header.h
#import "EnumsHeader.h"
。我能够在Swift类(ClassA.Swift
)中创建此枚举类型的属性。当我从ClassB.m
(Objective-C)课程中引用此属性时,我发现编译错误:属性&#39; optionsFromA&#39;在类别&#39; ClassA *&#39;
我在这里遗漏了什么吗?
EnumsHeader.h
#ifndef EnumsHeader_h
#define EnumsHeader_h
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, EnumOption) {
EnumOptionA,
EnumOptionB,
EnumOptionC
};
#endif
ClassA.swift
public class ClassA: NSObject {
public var optionsFromA: EnumOption!
}
ClassB.m
#import <Foundation/Foundation.h>
#import "TestEnumsInterop-Swift.h"
@class ClassB;
@interface ClassB:NSObject
@end
@implementation ClassB
- (instancetype)init {
if (self = [super init]) {
ClassA *a = [ClassA new];
a.optionsFromA = EnumOptionA; //<--- Property 'optionsFromA' not found on object of type 'ClassA *'
}
return self;
}
@end
答案 0 :(得分:2)
Objective-C没有可选值, 您可以将optionsFromA声明为:
public class ClassA: NSObject {
public var optionsFromA: EnumOption = .A
}