我按照建议将常量存储在objective-c头文件中here。我定义了一个ns_枚举和一个常量数组,它在objective-c中工作得很好,例如sdmoderstring(ksdone)。但是,我不能让斯威夫特给我打电话。我确信我在这里做了一些非常愚蠢的事情,但如果能从斯威夫特那里得到一个如何称呼SDM的建议,我将不胜感激。我可以进入SDMode但不能进入SDModestring。谢谢。
typedef NS_ENUM(NSInteger, SDMode) {
kSDOne, kSDTwo, kSDThree
};
#define SDModeString(SDMode) [@[@"kSDOne",@"kSDTwo",@"kSDThree"] objectAtIndex:SDMode]
最佳答案
你需要把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);
}
}