相关疑难解决方法(0)

枚举值到NSString(iOS)

我有一个包含几个值的枚举:

枚举{value1,value2,value3} myValue;

在我的应用程序中的某个点,我希望检查枚举的哪个值现在处于活动状态.我正在使用NSLog,但我不清楚如何显示枚举的当前值(value1/valu2/valu3/etc ...)作为NSLog的NSString.

任何人?

enums nsstring ios

64
推荐指数
8
解决办法
10万
查看次数

是否有任何编译器/预处理器技巧来调试打印枚举的名称?

我经常发现自己编写辅助调试器方法,返回一个可打印的字符串,给定一些枚举值.这样做的原因是当你通常记录枚举时,你得到的只是一个数字.我讨厌不得不回到我的来源找出那个枚举是什么.所以我会做类似的事情

typedef enum
{
   kOne = 1,
   kTwo,
   kThree,
}
MyEnum;

NSString *debugStringForEnum(MyEnum e)
{
    switch ( e )
        case kOne:
            return @"One";
        case kTwo:
            return @"Two";
        ....
}

....
NSLog(@"My debug log: %@", debugStringForEnum(someVariable));
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有没有办法避免编写所有这些帮助代码,只是为了看到枚举的标签值?

谢谢

c debugging clang

14
推荐指数
2
解决办法
1776
查看次数

我可以在Objective-C枚举中添加方法吗?

在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();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在Objective-C中重新制作它.到目前为止,我已经这样做了:

NS_ENUM(NSInteger, Toppings) {
  PEPPERONI,
  EXTRA_CHEESE,
  SECRET_SAUCE
};
Run Code Online (Sandbox Code Playgroud)

然后我很难过.我该如何制作toString()方法?我知道它相当复杂并且使用了一些特定于Java的行为,但我确信有一种方法.

我唯一想到的是拥有一个具有此功能的独立助手类,但这看起来有点多,不是吗?

enums objective-c

6
推荐指数
2
解决办法
4861
查看次数

Objective-c枚举对象到字符串

可能重复:
将objective-c typedef转换为其等效字符串

我有一个枚举声明如下:

typedef enum MODE {
    FRAMED, HALFPAGED, FULLPAGED
} MODE;
Run Code Online (Sandbox Code Playgroud)

有没有办法将FRAMED/HALFPAGED/FULLPAGED转换为字符串.

我知道C++有能力使用:

static String^ GetName(
    Type^ enumType,
    Object^ value
)
Run Code Online (Sandbox Code Playgroud)

是否会有Objective-C的等价物?

enums objective-c

5
推荐指数
1
解决办法
6982
查看次数

标签 统计

enums ×3

objective-c ×2

c ×1

clang ×1

debugging ×1

ios ×1

nsstring ×1