我按照建议here将常量存储在objective-c头文件中。我定义了一个NS_ENUM以及一个在objective-c中很好地工作的常量数组,例如: SDModeString(kSDOne)。但是,我无法通过Swift调用此工作。我确信我在这里做了一些非常愚蠢的事情,但是对如何从Swift调用SDModeString的建议将不胜感激。我可以访问SDMode但不能访问SDModeString。谢谢。
typedef NS_ENUM(NSInteger, SDMode) {
kSDOne, kSDTwo, kSDThree
};
#define SDModeString(SDMode) [@[@"kSDOne",@"kSDTwo",@"kSDThree"] objectAtIndex:SDMode]
答案 0 :(得分:4)
您需要将SDModeString
转换为正确的功能,如下所示:
inline NSString *SDModeString(enum SDMode mode) {
return [@[ @"kSDOne", @"kSDTwo", @"kSDThree" ] objectAtIndex:mode];
}
虽然我可能只是使用开关,更快,更安全等等:
inline NSString *SDModeString(enum SDMode mode) {
switch (mode) {
case kSDOne: return @"kSDOne";
case kSDTwo: return @"kSDTwo";
case kSDThree: return @"kSDThree";
default: assert(false);
}
}