我有一个带有返回值的方法,我想从MainviewController.m调用它。另外,我必须在调用它时将值(float)传递给方法。 但是我遇到了麻烦,我尝试调试并在方法中添加一些断点和NSLog,但似乎没有调用该方法,因为调试器不会在断点处停止并且不会打印NSLog 。 (最终打印(calculatorScreen.text ...)只打印(null))
MainViewController.m
currentNumber = currentNumber *10 + (float)[sender tag];
NSNumber *convertedNumber = [[NSNumber alloc] init];
NSString *nf = [convertedNumber customFormatNumber:currentNumber];
calculatorScreen.text = [NSString stringWithFormat:@"%@",nf]; // it's printing (null) :(
的NSNumber + FormatNumber.h
@interface NSNumber (FormatNumber)
-(NSString *) customFormatNumber:(float)n1;
的NSNumber + FormatNumber.m
-(NSString *) customFormatNumber:(float)n1
{
NSLog(@" %f" ,n1); // for debug and a breakpoint here
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];
NSString *nf = [formatter stringFromNumber:[NSNumber numberWithFloat:n1]];
NSLog(@"Class %@" ,nf); // for debug
return nf;
}
我在这里缺少什么?
答案 0 :(得分:5)
[[NSNumber alloc]init]
返回nil,因为您没有指定数字值,并且忽略了无目标操作。
让我告诉你,你正在采取一种漫长而不必要的方式,我会这样写:
NSNumberFormatter* formatter=[NSNumberFormatter new];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];
formatter.numberStyle= NSNumberFormatterDecimalStyle;
calculatorScreen.text= [formatter stringFromNumber: @(currentNumber*10.0+[sender tag]) ];
答案 1 :(得分:0)
您是否试图覆盖NSNumber?
对于CustomNumber.h
@interface CustomNumber:NSNumber
-(NSString *) customFormatNumber:(float) n1;
对于CustomNumber.m
-(NSString *) customFormatNumber:(float)n1
{
NSLog(@" %f" ,n1); // for debug and a breakpoint here
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];
NSString *nf = [formatter stringFromNumber:[NSNumber numberWithFloat:n1]];
NSLog(@"Class %@" ,nf); // for debug
[formatter release];
return nf;
}
然后在MainViewController.m
中currentNumber = currentNumber *10 + (float)[sender tag];
CustomNumber *convertedNumber = [[CustomNumber alloc] init];
calculatorScreen.text = [convertedNumber customFormatNumber:currentNumber];
OR
在MainViewController.m中创建方法然后代码将
currentNumber = currentNumber *10 + (float)[sender tag];
calculatorScreen.text = [self customFormatNumber:currentNumber];