我有我的項目中下面的方法,我也得到一個編譯器警告:在第一行Incompatible Objective-C types initializing 'struct NSNumber *', expected 'struct NSDecimalNumber *
:不兼容的Objective-C類型初始化「結構的NSNumber *」,預期「結構NSDecimalNumber *」
- (IBAction)sliderValueChanged:(id)sender {
// HERE IS WHERE THE WARNING OCCURS:
NSDecimalNumber *tempNumber = [NSDecimalNumber numberWithFloat:[self.slider value]];
NSDecimalNumberHandler *roundingStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundBankers
scale:3
raiseOnExactness:NO
raiseOnOverflow:NO
raiseOnUnderflow:NO
raiseOnDivideByZero:NO];
NSDecimalNumber *roundedNumber = [tempNumber decimalNumberByRoundingAccordingToBehavior:roundingStyle];
self.slider.value = [roundedNumber floatValue];
// Set up the percentage formatter
NSNumberFormatter *percentFormatter = [[NSNumberFormatter alloc] init];
[percentFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[percentFormatter setMinimumFractionDigits:1];
[percentFormatter setMaximumFractionDigits:1];
// Find the label to update
NSUInteger onlyRow[] = {0, 0};
NSIndexPath *onlyRowPath = [NSIndexPath indexPathWithIndexes:onlyRow length:2];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:onlyRowPath];
UILabel *theLabel = (UILabel *)[cell.contentView viewWithTag:kLabelFieldTag];
NSNumber *theNumber = [NSNumber numberWithFloat:self.slider.value];
theLabel.text = [percentFormatter stringFromNumber:theNumber];
[percentFormatter release];
}
任何幫助將不勝感激,謝謝!
方法1個工作法,('[NSDecimalNumber numberWithFlo at:2] class]'是NSDecimalNumber) – cobbal 2010-08-25 15:18:12
好的,很好聽,但我仍然堅持不同的方法。在NSNumber標題中的靜態演員肯定是一個問題... – 2010-08-25 15:20:20
@cobbal - 其實,這可以引入浮點問題,所以如果你想避免這個問題,我會推薦列表2。看到這個問題的例子可以出錯:http://stackoverflow.com/questions/2479100/cocoa-ive-discovered-what-i-think-is-a-bug-with-nsdecimalnumber – 2010-08-25 19:18:55