将浮点数值转换为id。我该如何做?

3

可能重复:
如何在NSArray中存储浮点数值?

它想要id值,但我的变量是浮点数。我想导入tmpValue数组的第一个对象。我该怎么做?

tmpToplam =  tmpToplam + ([[self.closeData objectAtIndex:i]floatValue] - tmpToplam)* expCarpan;


            [tmpValue replaceObjectAtIndex:1 withObject:tmpToplam]; 
3个回答

8
您可能希望将浮点数包装在NSNumber中,因为id只是指向“任何Objective-C对象”的指针,NSNumber是适当的Objective-C类来封装数字。
float a = 2.0;
float b = 3.0;
NSNumber *aNumber = [NSNumber numberWithFloat:a];
NSNumber *bNumber = [NSNumber numberWithFloat:b];
NSArray *array = [NSArray arrayWithObjects:aNumber, bNumber, nil];

4

id 是指向 Objective-C 对象的指针,在 Cocoa 中通常是一个 NSObject,因此您需要将您的浮点数封装在一个继承自 NSObjectNSNumber 中。 NSNumber 可以处理许多其他原始类型。


更具体地说,NSNumber是NSValue的一个子类(当然,NSValue最终派生自NSObject)。 - dreamlax
True。NSValue更通用,可用于结构体、指针和其他事物。 - jbat100
修改了我的答案以避免任何混淆。 - jbat100

0
为什么不使用NSString StringWithFormat将tmpToplam转换为字符串?实际上,在数组中,您需要放置一个对象,而浮点数不被视为对象。字符串当然是一个对象。

将浮点数转换为字符串?这根本不是一个好主意。 - dreamlax
3
NSNumber才是正确的选择,而不是NSString。 - jbat100
我的错。NSNumber肯定是更好的选择,但NSString也是可能的(当然不是一个好的选择)。 - utsabiem

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