Objective c 枚举应以何种格式打印?%什么

Objective c 枚举应以何种格式打印?%什么,objective-c,enums,Objective C,Enums,这行代码导致编译器抱怨并进入调试模式 NSLog(@"Attacker card: %@", [attackerCard suit]); 我想知道这是否是因为suit是一个声明为 @property (assign) Suit suit; typedef enum { CLUBS, DIAMONDS, HEARTS, SPADES } Suit; 其中,套装声明为 @property (assign) Suit suit; typedef enum { CLUBS, DI

这行代码导致编译器抱怨并进入调试模式

NSLog(@"Attacker card: %@", [attackerCard suit]);
我想知道这是否是因为suit是一个声明为

@property (assign) Suit suit;
typedef enum {
    CLUBS, DIAMONDS, HEARTS, SPADES
} Suit;
其中,
套装
声明为

@property (assign) Suit suit;
typedef enum {
    CLUBS, DIAMONDS, HEARTS, SPADES
} Suit;

我的格式是否有问题,或者问题出在其他地方?

枚举类型的具体大小是由实现定义的,但它始终是整数类型,因此
%d
在大多数情况下都有效。如果您需要它非常健壮,您需要测试
sizeof(Suit)
,并在此基础上选择一种格式。

枚举类型的特定大小是由实现定义的,但它始终是整数类型,因此
%d
大部分时间都可以工作。如果您需要它非常健壮,您需要测试
sizeof(Suit)
,并根据它选择一种格式。

谢谢Carl!我是否有办法恢复特定枚举值的“文本表示”。换句话说,我能做些什么来得到“红心”而不是2个吗?不,没有自己的查找表是无法做到的。谢谢你,卡尔!我是否有办法恢复特定枚举值的“文本表示”。换句话说,我可以做些什么来获取“HEARTS”而不是2吗?不,如果不创建自己的查找表,就无法做到这一点。请使用和int格式,如%d,并将枚举强制转换为(int)。如果不强制转换,我无法避免XCode 6中出现警告。请使用和int格式,如%d,并将枚举强制转换为(int)。没有强制转换,我无法避免XCode 6中的警告。