我在数字或货币格式中经常使用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)。

有什么更好的解决方案吗?

最佳答案

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];

关于ios - ios:NSLocale/分组分隔符-讨厌的警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17830414/

10-10 06:43