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