iPhone程序崩溃浮点到字符串转换

时间:2010-11-15 00:59:34

标签: iphone string crash floating-point

我在获取已从浮点转换为在UITableView的自定义单元格中的标签中显示的字符串时遇到问题。

如果我尝试将float的值赋给标签,程序将崩溃。如果我离开“strAIAreaIncrease = @”6.5%“;”没有注释,该程序工作正常 - 但没有计算值。

strAIAreaIncrease = [NSString stringWithFormat:@"%.2f",fltAreaIncrease];
strAIAreaIncrease = [strAIAreaIncrease stringByAppendingString:@"%"];
DebugLog(@"The value of float num is %.2f", fltAreaIncrease);
DebugLog(@"The value of the string is %@", strAIAreaIncrease);
// strAIAreaIncrease = @"6.5%"; 

调试器控制台显示以下内容:

2010-11-14 19:52:38.122 Building Use[855:207]  The value of float num is 2.50
2010-11-14 19:52:38.123 Building Use[855:207]  The value of the string is 2.50%

我在其他自定义单元格标签上使用此格式没有问题。任何人都知道发生了什么事?

感谢。

3 个答案:

答案 0 :(得分:0)

我认为你应该使用NSMutableString:

e.g。

NSMutableString* straIAreaIncrease 
    = [NSMutableString stringWithFormat:@"%.2f", fltAreaIncreas];
[strAIAreaIncrease appendString:@"%%"];

答案 1 :(得分:0)

好的,我试图实现NSMutabeString但没有成功。很明显,我错过了对MSMutableString的有趣理解。

我认为我创建它的方式是问题的一部分。我需要能够将变量传递给多个方法,所以我试图在头文件中创建它。似乎我遇到的所有示例都在方法中创建了字符串。

在我的标题中,我有:

NSMutableString *strAIAreaIncrease;

我认为这是一个问题,我认为我需要为它分配一个值,但我不确定如何。调试器控制台提供以下内容:

2010-11-21 07:40:40.456 Building Use[1274:207] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '+[NSMutableString string:]: unrecognized selector sent to class 0x2317c0'

另一个问题是:如果我在数组中使用MSMutableString值,那么数组是否必须是MSMutable数组?

感谢。

答案 2 :(得分:0)

问题不在标题中。好像你正在使用

strAIAreaIncrease = [NSMutableString string:@"someString"];

但是类NSMutableString中没有方法“string:”。尝试使用

strAIAreaIncrease = [NSMutableString stringWithString:@"someString"];

strAIAreaIncrease = [NSMutableString stringWithFormat:@"someString %d", someInteger];

关于你的第二个问题:在处理NSMutableString时,你不必使用NSMutableArray。 NSMutableArray中的“Mutable”意味着您可以在生成对象后添加和删除对象。