2017-03-08 2 views
0

Ich habe einen Objective-C Enum in EnumsHeader.h Datei erstellt und importiert, dass in <Module>-Bridging-Header.h#import "EnumsHeader.h". Ich kann eine Eigenschaft dieses Aufzählungstyps in einer Swift-Klasse erstellen (ClassA.Swift). Wenn ich auf diese Eigenschaft von ClassB.m (Objective-C) Klasse beziehen, ich sehe Kompilierungsfehler: Property ‚optionsFromA‘ gefunden, nicht auf Objekt vom TypNS_ENUM in Swift Klasse als Eigenschaft

‚KlasseA *‘ Bin ich etwas fehlt hier?

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 

Antwort

2

Objective-C hat nein Optionaler Wert, Sie können optionsFromA wie folgt angeben:

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