我在Objective-C文件和Swift文件中有两个枚举定义。
Japanese.h
typedef enum {
JapaneseFoodType_Sushi = 1,
JapaneseFoodType_Tempura = 2,
} JapaneseFoodType;
US.swift
enum USFoodType {
case HUMBERGER;
case STEAK;
}
众所周知,我可以像以下这样使用Objective-C枚举;
Japanese.m
- (void)method {
JapaneseFoodType type1 = JapaneseFoodType_Sushi;
JapaneseFoodType type2 = JapaneseFoodType_Tempura;
if (type1 == type2) {// this is no problem
}
}
但是我无法像以下这样在Swift文件中使用Objective-C枚举;
func method() {
var type1: USFoodType = USFoodType.HUMBERGER// no problem
var type2: USFoodType = USFoodType.HUMBERGER// no problem
if type1 == type2 {
}
var type3: JapaneseFoodType = JapaneseFoodType_Sushi// no problem
var type4: JapaneseFoodType = JapaneseFoodType_Tempura// no problem
if type3 == type4 {// 'JapaneseFoodType' is not convertible to 'Selector'
}
}
这是Swift的一个bug吗?我该如何在Swift文件中使用Objective-C(C)枚举?
reinterpret_cast
? - Vyachaslav GerchicovwithMemoryRebound
。 - Sulthan