LoginSignup
3
2

More than 5 years have passed since last update.

Objective-C で enum を宣言し、Extension して Swiftから利用する

Posted at

はじめに

プロジェクトが古い場合やSwiftへの書き換えが途中の場合、Objective-CとSwiftが混在していることがあります。
すでに存在するObjective-C側を少し変更して、Swift側から呼び出したいときに参考にしてください。

※ 私の場合は、Objective-CがEntity or Modelで、SwiftからそのEntityを使用するときに利用しました。

内容

実装方法

sample.h
typedef NS_ENUM(NSInteger, SampleEnum) {
    SampleEnumNormal = 0,
    SampleEnumFree = 1,
    SampleEnumPaid = 2
};
sample+extensions.swift
extension SampleEnum {
    var title: String {
        switch self {
        case .Normal:
            return "通常"
        case .Free:
            return "無料"
        case .Paid:
            return "有料"
        }
    }
}

※Swiftでは以下のように変換されるらしい(参考記事より)

sample.swift
enum SampleEnum: Int {
    case Normal
    case Free
    case Paid
}

Swiftからの利用方法

test.swift
SampleEnum(rawValue: 0)?.title

Objective-Cからの利用方法

なし
※通常のEnumとしては使えますが、SwiftでExstensionした中は呼び出せないと思います。ただ、ここはイマイチ理解できていないので、利用する方法があるかもしれません。知っている方はぜひ教えてください。

参考記事

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2