2013-07-24 2 views
2

숫자 또는 통화 서식에 대해 NSLocale을 사용하고 있습니다. 예를 들어 나는이 방법을 사용ios : NSLocale/분류 Separator - annoying warnings

컴파일러는 항상 나에게 경고를 제공
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
// Config the NSNumberFormatter ... 
formatter.groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]; 

: Multiple methods named 'objectForKey:' found

이 큰 프로젝트 (이러한 유형의 20 개 이상의 경고) 정말 귀찮을합니다. 이 작품

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

하지만 [NSLocale currentLocale]NSDictionary로 직접하지 보인다이 (문제가 발생할 것입니다 있는지 확실하지 않습니다 :이 경고를 없애 발견하는 유일한 방법은 NSDictionary에 형태 캐스트를하고있다 [[NSLocale currentLocale] class]__NSCFLocale을 반환합니다.

더 좋은 해결책이 있습니까?

답변

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로 이동합니다.

또는 당신이 제안, 당신은 단지

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

감사처럼 NSLocale을 강제로 캐스팅 할 수 있습니다! 바보 같은 컴파일러;) 또한 코드의 한 줄을 저장하므로 대답을 다음과 같은 대안을 추가하십시오 :'formatter.groupingSeparator = [(NSLocale *) [NSLocale currentLocale] objectForKey : NSLocaleGroupingSeparator];' – FrankZp