iOS双打NSArray(目标c)

时间:2017-10-19 15:56:58

标签: ios objective-c nsarray

在我的数组中,我有这些数据,每个值都是double类型:

(
    "28.04234",
    "29.3234",
    "25.03324",
    "9.390000000000001",
)

我需要将所有元素更改为NSString只有2个十进制,我怎么能用优化代码的最佳方法来做到这一点。

例如:

myArray[0] = "28.04"
myArray[1] = "29.32"

...

1 个答案:

答案 0 :(得分:3)

在swift中,您可以使用map语句执行此操作。在Objective-C中,您必须拥有NSNrray的NSNumber。在Objective-C中,不可能有NSArray的值类型,如double。 ( 可能 - 正常,甚至 - 有一个浮点值的C数组,但我不认为这是你所说的。)< / p>

尝试这样的代码:

NSArray <NSString *>*mapArrayOfNumbers(NSArray <NSNumber *> *sourceArray) {
    NSMutableArray *result = [NSMutableArray arrayWithCapacity: sourceArray.count];
    for (NSNumber *aNumber in sourceArray) {
        [result addObject:[NSString stringWithFormat: @"%.02f", aNumber.doubleValue]];
    }
    return result;
}

你可以这样称呼它:

NSArray <NSNumber *> *numbers = @[@(1.1), @(2.2), @(3.4567), @(8.901234), @(9.876543)];
NSArray <NSString *> *strings = mapArrayOfNumbers(numbers);
for (NSString *aString in strings) {
    NSLog(@"Entry = %@", aString);
}