如何设置UILabel.text等于iOS中的数字

时间:2014-04-28 22:22:40

标签: objective-c uitableview uilabel

我正在尝试设置

cell.detailTextLabel.text = [object valueForKeyPath:"@foo"]

等于一个数字。我可以在此字段中设置字符串,但不能设置数字。

但我的错误是:

  • 因未捕获的异常“NSInvalidArgumentException”而终止应用,原因:'-[__NSCFNumber isEqualToString:]

1 个答案:

答案 0 :(得分:2)

您无法直接将NSNumber分配给NSString值(标签的text属性)。

您需要先将数字转换为字符串。

最佳选择是使用NSNumberFormatter,以便根据用户的区域设置正确显示该数字。

NSNumber *val = object[@"foo"];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
// configure the formatter as needed
NSString *str = [formatter stringFromNumber:val];
cell.detailTextLabel.text = str;

虽然您可以通过以下方式获得可接受的结果:

cell.detailTextLabel.text = [object[@"foo"] stringValue];