ios:NSLocale /分组分隔符 - 恼人的警告

时间:2013-07-24 09:43:38

标签: ios objective-c nslocale

我正在使用NSLocale进行数字或货币格式化。例如,我这样使用它:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
// Config the NSNumberFormatter ...
formatter.groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];

编译器总是给我警告:Multiple methods named 'objectForKey:' found

这在大型项目中非常烦人(20多种此类警告)。我发现摆脱此警告的唯一方法是对NSDictionary进行类型转换:

formatter.groupingSeparator = [(NSDictionary *)[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];

这有效,但我不确定这是否会导致问题,因为[NSLocale currentLocale]似乎不是NSDictionary[[NSLocale currentLocale] class]返回__NSCFLocale)。

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

CMD +点击您的objectForKey声明。 Xcode将在NSDictionary.h中找到该方法。

现在更改您的代码,如

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
...
NSLocale *currentLocale = [NSLocale currentLocale];
formatter.groupingSeparator = [currentLocale objectForKey:NSLocaleGroupingSeparator];

和CMD +再次单击此objectForKey语句。 Xcode将转到正确的位置,NSLocale.h。

或者,正如您所建议的那样,您可以强制转换NSLocale,如

formatter.groupingSeparator = [(NSLocale *)[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];