はじめに
プロジェクトが古い場合や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した中は呼び出せないと思います。ただ、ここはイマイチ理解できていないので、利用する方法があるかもしれません。知っている方はぜひ教えてください。