반응형
로또 API를 통해 당첨번호를 가져오고 있었다. 가장 최근 회차는 1079 인데
아직 진행하지 않은 1100회차를 넣었을때 앱이 꺼지지않아 찾아봤다.
1. int 와 intValue
SwiftyJSON 에서 int는 Int?타입으로 nil값을 가질 수 있고, intValue는 nil값을 가질 수 없다.
왜 앱이 꺼지지 않고 0이라는 값이 나올까
하나하나 다 출력 해 보자.
JSON의 값으로는 fail이 넘어왔고, 다른 상수들에는 기본 값을 설정 한 적이없는데 0과 빈 문자열이 들어가 있다.
2. stringValue의 내부
stringValue를 보면 타입이 string 이면 object를 String타입으로 타입 캐스팅 하고 있다. 타입 캐스팅에 실패할 경우 ""(빈문자열) 을 반환 하고 있다.
numberValue는 object를 NSNumber 타입으로 타입캐스팅 한다. 실패 할 경우 0을 반환한다.
3. object 의 내부
타입을 보면 default 타입일때 rawNull을 리턴한다.
4. 타입 확인
타입을 직접 확인 해 본다!
nil 을 허용 안하는 stringValue, intValue 같은경우 ( string,number,bool )타입이 아닌
나머지 default 타입인 경우 " "(빈문자열)과 NSNumber(value: 0.0) 을 반환 해주기 때문에
0과 빈 문자열이 들어가 있었다.!
반응형
반응형