iOS

SwiftyJSON) json.intValue,stringValue의 기본값

skyiOS 2023. 8. 9. 00:36
반응형
로또 API를 통해 당첨번호를 가져오고 있었다. 가장 최근 회차는 1079 인데
아직 진행하지 않은 1100회차를 넣었을때 앱이 꺼지지않아 찾아봤다.

1. int 와 intValue 

SwiftyJSON 에서 int는 Int?타입으로 nil값을 가질 수 있고, intValue는 nil값을 가질 수 없다.

SwiftyJSON int와 intValue

왜 앱이 꺼지지 않고 0이라는 값이 나올까
하나하나 다 출력 해 보자.

 

JSON의 값으로는 fail이 넘어왔고, 다른 상수들에는 기본 값을 설정 한 적이없는데 0과 빈 문자열이 들어가 있다.

 


2. stringValue의 내부 

stringValue를 보면 타입이 string 이면 object를 String타입으로 타입 캐스팅 하고 있다. 타입 캐스팅에 실패할 경우 ""(빈문자열) 을 반환 하고 있다. 

numberValue는 object를 NSNumber 타입으로 타입캐스팅 한다. 실패 할 경우 0을 반환한다.

stringValue 와 numberValue 의 내부 


3. object 의 내부 

타입을 보면 default 타입일때 rawNull을 리턴한다.

object와 type의 return 값

4. 타입 확인 

타입을 직접 확인 해 본다! 


nil 을 허용 안하는 stringValue, intValue 같은경우 ( string,number,bool )타입이 아닌
나머지 default 타입인 경우 " "(빈문자열)과 NSNumber(value: 0.0) 을 반환 해주기 때문에
0과 빈 문자열이 들어가 있었다.!

반응형

 

반응형