我有一个枚举属性:
typedef enum syncCodeTypes {
kCodeNull,
kCodeFoo,
kCodeBar,
kCodeDone
} syncCodeType;
//...
@property syncCodeType syncCode;
我在一个stringWithFormat:
:
[self showAlertWithMessage:NSLocalizedString(@"Sync Error", @"Sync Error") andInfo:[NSString stringWithFormat:NSLocalizedString("Heads up re foobar code %d.", "Heads up re foobar code %d."), self.syncCode]];
…并得到这个警告:
从不兼容的指针类型传递本地化StringForKey:value:table 的参数 1。
%u
如果我替换无符号转换说明符(而不是) ,也会发生同样的事情%d
。编译器不喜欢%lu
, %ld
,%llu
或%lld
任何一个。
有关相关语言的其他帖子建议枚举既不是有符号也不是无符号的,所以我尝试将枚举显式转换为有符号整数和无符号整数 - 并得到完全相同的错误消息:
NSInteger iSyncCode = self.syncCode;
[self showAlertWithMessage:NSLocalizedString(@"Sync Error", @"Sync Error") andInfo:[NSString stringWithFormat:NSLocalizedString(“Heads up re foobar code %d.", “Heads up re foobar code %d."), iSyncCode]];
// compiler still annoyed
NSUInteger uSyncCode = self.syncCode;
[self showAlertWithMessage:NSLocalizedString(@"Sync Error", @"Sync Error") andInfo:[NSString stringWithFormat:NSLocalizedString(“Heads up re foobar code %u.”, “Heads up re foobar code %u.”), uSyncCode]];
// compiler still annoyed
在运行时没有问题——现在。但我想成为犹太教徒。有什么建议么?