1. ホーム
  2. objective-c

[解決済み] Objective-CでSwiftのString enumを利用できるようにするには?

2023-05-27 08:04:26

質問

私は、この列挙型を String の値を持つこの列挙型は、サーバーにログを記録する API メソッドに、メッセージがどのようなサーバー性を持っているかを伝えるために使用されます。私は Swift 1.2 を使っているので、enum は Objective-C にマップすることができます。

@objc enum LogSeverity : String {
    case Debug = "DEBUG"
    case Info = "INFO"
    case Warn = "WARN"
    case Error = "ERROR"
}

エラーが表示されます。

objc enum raw 型 String は整数型ではありません。

SwiftからObjective-Cに変換できるのは整数型だけだと書いてあるところを見つけることが出来ませんでした。これは事実ですか?もしそうなら、Objective-C でこのようなものを利用できるようにする方法について、誰かベストプラクティスの提案を持っていますか?

どのように解決するのですか?

からの Xcode 6.3 リリースノート (強調) を参照してください。

Swift言語の機能強化

...

Swift の列挙型は、@objc 属性を使用して Objective-C にエクスポートできるようになりました。 属性を使って Objective-C にエクスポートできるようになりました。objc 列挙型 は整数の raw 型を宣言しなければなりません。 でなければならず、また ジェネリックであったり、関連する値を使用することはできません。Objective-Cのenumは Objective-C の列挙型は名前空間を持たないため、列挙型ケースは列挙型名とケース名を連結したものとして Objective-C にインポートされます。 enumケースはenum名とケース名を連結したものとしてObjective-Cにインポートされます。