私は列挙型のプロパティを持っています:
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]];
…そして、次の警告が表示されます。
互換性のないポインター型から localizedStringForKey: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
実行時に問題はありません — 今のところ。しかし、私はコーシャになりたいです。助言がありますか?