我有一个UITextField,我试图使用带有NSNumberFormatterDecimalStyle的NSNumberFormatter将文本字段转换为NSNumber来初始化一个对象。
然而,当我这样做时,我无法从转换中获得任何明智的结果。出于这个例子的目的,我用一个字符串替换了UITextField,但我仍然得到奇怪的结果。我相信我正在做一些愚蠢的事,但任何帮助都会受到赞赏。
//NSString * boardNumberText = self.txtBoardNumbs.text;
NSString * boardNumberText = @"42";
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * boardNumber = [formatter numberFromString:boardNumberText];
if ([boardNumber isEqual:nil]) {
NSLog(@"Number was null");
}
NSLog(@"Number was not null");
[self.board setNumber:boardNumber];
NSLog(boardNumberText);
NSLog([NSString stringWithFormat:@"%d", boardNumber]);
NSLog([NSString stringWithFormat:@"%d", self.board.number]);
我运行时从日志文件中获得的输出是:
2012-07-15 16:54:26.564 CoreDataDev[16123:fb03] Number was not null
2012-07-15 16:54:26.564 CoreDataDev[16123:fb03] 42
2012-07-15 16:54:26.565 CoreDataDev[16123:fb03] 135821152
2012-07-15 16:54:26.565 CoreDataDev[16123:fb03] 135820272
答案 0 :(得分:0)
您不能只使用整数格式说明符将NSNumber
记录到控制台,因为NSNumber
是一个包装器对象。此外,NSLog
采用格式字符串,因此您无需使用stringWithFormat:
。试试这个:
NSLog(@"%d", [boardNumber intValue]);
答案 1 :(得分:0)
使用
NSLog(@"%d", boardNumber);
错误:它打印boardNumber指针的内存地址(NSNumber实例本身)。使用
NSLog(@"%d", [boardNumber intValue]);
代替。
P上。 s。:那个
NSLog([NSString stringWithFormat:...]);
是不必要和丑陋的; NSLog具有内置格式字符串处理功能, 使用它!