0

我有一个带有返回值的方法,我想从 MainviewController.m 调用它。此外,我必须在调用它时将一个值(浮点数)传递给该方法。但是我遇到了麻烦,我尝试在方法中调试并添加一些断点和 NSLog,但似乎没有调用该方法,因为调试器不会在断点处停止并且不会打印 NSLog . (最终打印(calculatorScreen.text...)只是打印(null))

主视图控制器.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;
}

我在这里想念什么?

4

2 回答 2

5

[[NSNumber alloc]init]返回 nil 因为您没有指定数字值,并且 nil 目标操作被忽略。

让我告诉你,你正在遵循一个漫长而不必要的方式,我会这样写:

NSNumberFormatter* formatter=[NSNumberFormatter new];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];
formatter.numberStyle= NSNumberFormatterDecimalStyle;
calculatorScreen.text= [formatter stringFromNumber: @(currentNumber*10.0+[sender tag]) ];
于 2013-01-14T21:36:23.580 回答
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];

或者

在 MainViewController.m 创建方法,然后代码将是

currentNumber = currentNumber *10 + (float)[sender tag];
calculatorScreen.text = [self customFormatNumber:currentNumber];
于 2013-01-14T21:42:17.843 回答