Swift类中的NS_ENUM作为属性

时间:2017-03-08 04:19:01

标签: objective-c swift enums

我已在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

1 个答案:

答案 0 :(得分:2)

Objective-C没有可选值, 您可以将optionsFromA声明为:

public class ClassA: NSObject {
    public var optionsFromA: EnumOption = .A
}