1. ホーム
  2. objective-c

[解決済み] Obj-CでSwiftのEnumを使用することは可能ですか?

2022-04-24 01:31:14

質問

Obj-CのクラスのいくつかをSwiftに変換しようとしています。そして、他のいくつかのObj-Cクラスは、その変換されたクラスでまだenumを使用しています。私はプレリリースドックスで検索しましたが、それを見つけることができませんでした、または多分私はそれを逃しました。Obj-CクラスでSwiftのenumを使用する方法はありますか?または、この問題のドキュメントへのリンクはありますか?

これは、私の古いObj-Cコードと新しいSwiftコードで私がenumを宣言した方法です。

私の古いObj-Cコード。

typedef NS_ENUM(NSInteger, SomeEnum)
{
    SomeEnumA,
    SomeEnumB,
    SomeEnumC
};

@interface SomeClass : NSObject

...

@end

私の新しいSwiftコードです。

enum SomeEnum: NSInteger
{
    case A
    case B
    case C
};

class SomeClass: NSObject
{
    ...
}

更新しました。 回答より Swiftの1.2より古いバージョンではできない。しかし、この公式によると Swiftブログ . XCode 6.3 と共にリリースされた Swift 1.2 では、Swift Enum を Objective-C で使用することができます。 @objc の前にある enum

解決方法は?

Swiftバージョン1.2(Xcode 6.3)からは、できるようになりました。単に列挙型の宣言の前に @objc

@objc enum Bear: Int {
    case Black, Grizzly, Polar
}

恥ずかしながら スイフトブログ

<ブロッククオート

注:これは、文字列列の列挙や、関連する値を持つ列挙には使えません。enumはInt-boundである必要があります。


Objective-Cでは、次のようになります。

Bear type = BearBlack;
switch (type) {
    case BearBlack:
    case BearGrizzly:
    case BearPolar:
       [self runLikeHell];
}