当前位置:  开发笔记 > IOS > 正文

如何创建浮点值的NSMutableArray

如何解决《如何创建浮点值的NSMutableArray》经验,为你挑选了3个好方法。

我是Objective-C和iPhone开发的新手,我正在尝试在NSMutableArray中存储浮点值,但是当我这样做时,我得到一个错误,说"addObject的参数1的不兼容类型".我究竟做错了什么?我正在尝试创建一个双打数组,我可以用它来执行数学计算.



1> Ryan Townshe..:

NSMutableArray只保存对象,因此您希望使用NSNumber对象加载数组.创建每个NSNumber以保存您的double然后将其添加到您的阵列.也许是这样的.

NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:10.0f];
[array addObject:num];

根据需要重复.



2> Sijmen Mulde..:

使用NSNumber来包装你的浮点数,因为字典需要一个对象:

[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"];
/* or */
[myDictionary setObject:@0.2f forKey:@"theFloat"];

通过发送floatValue来检索它:

float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue];

代码未经测试.

您也可以在NSNumber中包装许多其他数据类型,请查看文档.对于像NSPoint和NSRect这样的结构,还有NSValue.



3> Jason Coco..:

在Cocoa中,NSMutableDictionary(以及所有集合)确实需要将对象作为值,因此您不能简单地传递任何其他数据类型.正如sjmulder和Ryan所建议的那样,您可以将标量值包装在NSNumber(对于数字)和NSValue的实例中以用于其他对象.

如果你代表一个十进制数字,对于类似价格的东西,我建议你也看一下并使用NSDecimalNumber.然后,您可以避免浮点不准确问题,并且通常可以使用并将"值"存储为NSDecimalNumber,而不是使用代码中的基元来表示它.

例如:

// somewhere
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain];
NSMutableArray*  prices= [[NSMutableArray array] retain];

// ...

[prices addObject:price];

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有