列表使用格式从数组中浮动

时间:2018-03-23 01:23:35

标签: ios objective-c arrays nsnumberformatter

我有一个包含花车的NSMutableArray。我可以显示一个特定格式的浮动或显示所有这些没有格式化但我无法弄清楚如何同时做两个。我首先将float包装在NSNumber中,以便可以将其添加到数组中:

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

NSNumberFormatter用于格式化要在textView中显示的数字。这是我过去常用的代码:

 for (NSNumber *aNumber in array) {

self.textView.text = [NSString stringWithFormat:@"%@" 
[NSNumberFormatter localizedStringFromNumber:aNumber 
numberStyle:NSNumberFormatterCurrencyStyle]];

}

这里显而易见的问题是,每次循环运行时,文本都会被数组中的数字替换而不是列出所有数据。

所以,我做了更多研究,发现componentsJoinedByString

 self.textView.text = [NSString stringWithFormat:@"%@", [array componentsJoinedByString:@", "]];

这很适合列出它们但缺少格式化样式:例如,它显示5.10作为5.1,我不想要。我尝试以某种方式将它们组合在一起,但它没有用,我也在循环中使用格式化程序尝试了stringByAppendingString,但这是一个根本不起作用的混乱。

1 个答案:

答案 0 :(得分:0)

您正在替换textView中的文本而不是附加..

 for (NSNumber *aNumber in array) {
    NSString *result = [NSNumberFormatter localizedStringFromNumber:aNumber 
numberStyle:NSNumberFormatterCurrencyStyle];

    if (aNumber == array.firstObject && !self.textView.text.length) {
        self.textView.text = result;
    }
    else {
        self.textView.text = [NSString stringWithFormat:@"%@, %@", self.textView.text, result];
    }
}