2012-09-14 101 views
2

我使用this code从一个人iphone - 格式说明

在这段代码的中间

,我们有

- (NSString *)hexStringFromColor { 
     return [NSString stringWithFormat:@"%0.6X", self.rgbHex]; 
} 

这是工作的罚款,直到Xcode的4.4。现在,我看到这个错误: 格式指定了类型unsigned int,但参数的类型为UInt32(又名无符号长整数)。

为什么Xcode在4.4中抱怨而不是之前?我应该使用什么说明符?

感谢。

回答

2

由于rgbHex似乎是一个unsigned long,正确的格式说明是@"%0.6lX"其中l代表long

List of iOS String Format Specifiers

+0

self.rgbHex是一个UInt32。 – SpaceDog

+0

@DesperateDeveloper你使用的代码是否保持不变?一些第三方库重新定义了UInt32,所以如果你包含任何这些,事情可能会像这样爆炸。 –

+0

@DesperateDeveloper无论哪种方式,错误消息说编译器将UInt32等同于“unsigned long”,这意味着您需要长格式的格式说明符。 –

2

尝试%0.6lX,其中'l'指定以下'X'是长整型而不是整型。如果该值实际上很长,您也可以使用ll

enter image description here

+0

self.rgbHex是一个UInt32。 – SpaceDog