将NSNumber转换为NSString问题

时间:2014-02-03 10:38:28

标签: ios objective-c type-conversion

我知道这是一个已被问过一千次的问题,但是我试过的几个已发布的例子,我仍然遇到问题。

现在我正在尝试向我的调试日志显示一个值,该对象包含我需要的数据作为NSNumber。我正在尝试的是以下代码行:

NSString *distanceString = [NSString stringWithFormat:@"%d", (NSNumber)self.selectedBeacon.distance ];

但是,由于上述原因,我收到以下错误:

  

使用类型'NSNumber',其中需要算术或指针类型

然后我尝试了以下内容:

NSString *distanceString = [NSNumber self.selectedBeacon.distance];

但是当我输入self.selectedBeacon.distance时,这条线没有出现在我的知识分子中。所以对于我的第三次尝试,我尝试了以下一行;

NSString *distanceString = [NSString stringWithFormat:@"%d", [NSNumber self.selectedBeacon.distance]];

但我得到的错误就是这个;

  

预期']'

虽然我可以看到我有两个右括号,所以错误引发了我。有人可以帮我这个吗?

4 个答案:

答案 0 :(得分:12)

假设self.selectedBeacon.distanceNSNumber,那么您可以使用[NSNumber stringValue]来获取字符串表示形式:

NSString *distanceString = [self.selectedBeacon.distance stringValue];

答案 1 :(得分:6)

你可以试试这个..

NSString *distanceString = [NSString stringWithFormat:@"%d",[self.selectedBeacon.distance integerValue]];

答案 2 :(得分:1)

NSNumber是一个对象。你不能直接引用一个对象..

要以字符串格式获取NSNumber值,请获取其字符串值,如下所示:

NSString *numberAsString = [myNSNumber stringValue];

答案 3 :(得分:0)

如果你不想通过NSLog登录,你可以

NSLog(@"%@",self.selectedBeacon.distance);

这将调用description的{​​{1}} 但这仅适用于对象。