将NSNumber转换为NSString的问题

4

我知道这已经是一个被问了上千次的问题,但是在我尝试了一些已发布的示例后,我仍然遇到了问题。

现在我正在尝试将一个NSNumber类型的数据显示到我的调试日志中。我尝试的代码如下:

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

然而,使用上述代码我得到了以下错误:

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

因此,我尝试了以下代码:

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

但是当我尝试输入self.selectedBeacon.distance时,该行未出现在我的Intelisense中。因此,在第三次尝试中,我尝试了以下行:

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

但我得到的错误是;

预期 ']' 符号

尽管我看到有两个闭合括号,但这个错误还是让我困惑了。有人可以帮帮我吗?


这是一个非常基础的问题,而你试图解决它的努力表明你可以从学习一本教授 Objective-C 和 C 的好书中获益匪浅。 ;) - CouchDeveloper
非常正确,我来自更多的C#,C ++背景,不太涉及Objective C / iOS开发 :) - N0xus
4个回答

12

假设 self.selectedBeacon.distance 是一个 NSNumber,那么可以使用 [NSNumber stringValue] 来获取一个字符串表示:

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

6
您可以尝试这个方法...
NSString *distanceString = [NSString stringWithFormat:@"%d",[self.selectedBeacon.distance integerValue]];

好的而且明智的解决方案。谢谢。 - SURESH SANKE

1

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

要以字符串格式获取NSNumber值,请像这样获取其字符串值:

NSString *numberAsString = [myNSNumber stringValue];

0

如果你只是想通过NSLog记录它,你可以这样做

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

这将调用self.selectedBeacon.distancedescription。但这仅适用于对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接