gpt4 book ai didi

objective-c - 我可以向 Objective-C 枚举添加方法吗?

转载 作者:太空狗 更新时间:2023-10-30 03:39:16 25 4
gpt4 key购买 nike

在 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 - 您可以看到上面的代码如何使用单一类型名称会更清晰。您还应该为所有类型名称(和此函数)添加两个或三个字母的前缀以避免命名冲突。)

关于objective-c - 我可以向 Objective-C 枚举添加方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com