2016-09-08 2 views
0

"$229,000" 형식의 백 넘버를 보내는 서버와 통신합니다. iOS 10 NumberFormatter는 NIL을 반환하지만 iOS9, iOS8, iOS7에서 작동합니다.

우리는 같은 번호로이 변환 NSNumberFormatter를 사용 : 아이폰 OS-10GM 아래 모든 iOS 버전에

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setCurrencyCode:@"US"]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
[formatter setCurrencySymbol:@""]; 

, 통화 기호는 빈 문자열 또는 전무 그렇지 않으면 포맷이 실패하고 반환 nil을 수 있습니다.

그러나 iOS-10에서는 통화 기호를 "$"으로 추가하지 않으면 위의 코드가 실패합니다.

iOS 버전을 확인하는 것 외에 다른 해결책이 있습니까 (NSFoundationVersionNumber 통해)?

답변

2
는 다음과 같이 코드를 변경하여 아이폰 OS의 모든 버전에서 작동하도록 만들 수 있습니다

: 당신은 구문 분석 된 문자열 이후 통화 코드 또는 기호를 설정할 필요가 없습니다

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 

이미 적합 로케일이 설정되고있다.

@"$229,000"numberFromString:으로 전달할 때 해당 코드가 올바르게 NSNumber이됩니다.

iOS 10, 9.3 및 8.4로 테스트되었습니다.

+0

[formatter setLenient : YES]를 (를) 잊지 마세요. 문자열에 공백이 있으면 – Reaper

관련 문제