在Java中,我有一个枚举,例如:
public enum Toppings {
PEPPERONI,
EXTRA_CHEESE,
SECRET_SAUCE;
@Override
public String toString() {
switch(this) {
case EXTRA_CHEESE: return "Extra Cheese";
case SECRET_SAUCE: return "Secret Sauce™";
}
String name = name();
return name.charAt(0) + name.substring(1, name.length()).replace('_', ' ').toLowerCase();
}
}
我想在Objective-C中重新制作。到目前为止,我已经做到了:
NS_ENUM(NSInteger, Toppings) {
PEPPERONI,
EXTRA_CHEESE,
SECRET_SAUCE
};
然后我被困住了。我该怎么做toString()
?我知道它相当复杂,并且使用了一些特定于Java的行为,但是我敢肯定有办法。
唯一想到的就是拥有一个单独的具有此功能的帮助器类,但这似乎有点多了,不是吗?
不幸的是,没有办法向Objective-C枚举添加方法。(旁注:您可以向Swift枚举添加方法。)
传统上,独立函数将用于此目的,其主体类似于Java方法:
NSString* NSStringFromToppings(Toppings toppings)
{
switch (toppings)
{
case PEPPERONI: return @"Pepperoni";
case EXTRA_CHEESE: return @"Extra Cheese";
case SECRET_SAUCE: return @"Secret Sauce";
}
}
(旁注:您应该命名您的枚举,Topping
而不是-您Toppings
可以看到上面的代码如何使用单数类型的名称更清晰。您还应该在所有类型名称中添加两个或三个字母的前缀(以及此函数)以避免命名冲突。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句