목록Swift - 기초 (26)
기어가더라도 제대로

Why서버에서 API 응답값이 JSON 객체로 오지 않고 String으로 오는 경우가 있었다. 다행이 String의 내용은 일부만 손을 보면 JSON으로 변환이 가능한 수준이였다. (세상은 다양한 예측 불가능한 상황이 있다는 것을 배웠다. JSON도, XML도 아니고 String이라니) Swift에서 String으로 JSON을 만들어서 DTO로 만들어보자.WhatString을 iOS에서 쓰는 객체로 바꾸기 위해서는 중간 단계인 JSON으로 변환하는 과정이 필요하다. 단계별로 설명하자면서버에서 String을 응답으로 받고, (필요하다면 약간의 수정을 거쳐) 이를 JSON으로 변환한 후 struct로 디코딩한다.How// MARK: - 최종적으로 바꾸고 싶은 타입struct Person: Codable { ..

사실 기초가 아니지만, 어려운 예제지만 꼭 이해해야 더 풍성한 앱을 만드는데 도움이 되는 내용이기에 짚고 넘어갑니다. Bundle에서 파일을 올리는 예제 번들에 하나의 타입을 담고 있는 JSON 파일이 각각 여러개라고 가정 제네릭을 쓰지 않으면, 파일 하나하나당 타입을 명시해줘야해서 재사용성이 떨어짐 func decode(_ file: String) -> [String: Astronaut] { } func decode(_ file: String) -> [Mission] { } 각각은 missions.json, astronauts.json 두개의 파일을 올리기 위해서 거의 같은 내용의 메서드 두개를 만들어야할 것이다. 천천히 하나부터 기능이 동작하게 만들고 그다음에 이것을 제네릭으로 바꿔보자. decodi..

Optional This thing might have a value or might not 값이 있을 수도 있고 없을 수도 있다. 이런 개념이 생겨난 이유 코드의 예측성을 더하기 위해서 이 코드가 안전하고 예상한대로 잘 동작할 것이라는 예측 데이터가 없는 데이터를 이용하지 못하도록 미리 조치 값이 없는 키를 Dictionary 에 요청하면 Optional(nil) 이 나온다. Dictionary 의 value 타입을 String? 으로 지정하는 것이 더 좋다. optional 이라는 개념은 안에 값이 있을 수도 있고 없을 수도 있는 박스와 비슷하다. 값이 없을 때를 대비하는 안전장치 - unwrapping 값이 없을 때를 대비해서 조건문을 선언하는 if 키워드와 상수를 선언하는 let 키워드를 합치면 ..