2017-05-26 15 views
2

私は状況があります。誰もがこのenum in Objc> Swiftで宣言> Objcで使用される

  • のためのソリューションを持っている場合、私は私がにObjC enumを持って感謝です(私はMySwiftClassのインスタンスを作成しているMySwiftClass.swift
  • var abc : Abc!として、私は、たとえば、迅速なクラスでこれを宣言し Abc
  • を言いますmySwiftClass)の別のObjCクラス(myObjC.mファイル)
  • myObjC.mでenum AbcにmySwiftClass.abcとしてアクセスしようとしています。

これは、「プロパティ 'abc'がタイプMySwiftClass *のオブジェクトに見つかりませんでした」というエラーを投げています。 "ProjectName-Swift.h"ファイルでは、基本的にenumがプロパティとして追加されません。

私が信じているのは、SwiftクラスのObjC enumを宣言すると、すぐにenumに変換されるため、ObjCファイルでアクセスできないということです。

注: Swiftクラスを@objcとしてマークしても機能しませんでした。

答えて

3

数値スウィフトオプションはObjective-Cでは表現できないため、Objective-Cに公開されません。 abcをオプションではないと宣言し、Objective-Cから利用可能にする必要があります。次に、このスイフト3クラス検討

typedef NS_ENUM(NSInteger, Foo) { 
    FooBar, 
    FooBaz, 
    FooQux 
}; 

class SomeObject: NSObject { 
    var foo1: Foo = .bar   // this is exposed to Objective-C 
    var foo2: Foo! = .bar   // this is not 
} 

非オプション、foo1を、任意のに対し、Objective-Cのにさらされる

このObjective-Cの列挙検討します、foo2、そうではありません。

関連する問題