---
# System prepended metadata

title: 20220218 iOS 일일 개발 일지

---

20220218 iOS 일일 개발 일지
===

로직을 잘못구성했다.
사용하지 않는 api가 하나 있어서 어떤 문제인지 확인을 못하고 있었는데, 결국은 놓친 실수였음.
-> 모델 설계를 잘못한 부분도 있음.

실제 서버에서 주는 형태가 아니라 내가 멋대로 만들었음.
계층 구조를 제대로 파악하지 않아서 모델 내부에서 두개의 값을 받고 있었음.

실질적으로 하나의 값을 계속 null 값을 전달해주고 있었으며, 해당 부분에 대한 해결을 지속적으로 api 통신과정에서 찾으려고 했음.

```swift=

extension HomeResponseDTO {
    func toDomain() -> HomeInfo {
        var imageUrls: [String] = []
        adImageUrls.forEach {
            imageUrls.append($0.imageUrl)
        }
        
        let recommendSection: Section = .init(header: "당신만을 위한 추천 상품", detail: "Only for YOU🎁", imageUrl: "", products: recommendedItems.map { $0.toDomain() })
        
        var sectionInfo: [Section] = [recommendSection]
        sections.forEach {
            sectionInfo.append($0.toDomain())
        }
        return HomeInfo(ads: imageUrls, sections: sectionInfo)
    }
}
```

DTO의 역할에 대해서 봤을 때, 서버가 주는 그대로를 사용할 것이 아니라 view 내부에서 보여질 모습을 고려해서 모델을 재구성할 필요성이 있었다.

실제 일반적인 상품 데이터를 서버에서 제공받을 때 바로 전달받는 것이 아니고, 추천 상품에 대한 데이터를 함께 제공받고 있음.

하지만 실질적인 로직을 봤을 때, 해당 부분도 동일한 모습으로 제공 받을 필요성이 있었고, 이 부분에 대한 해결을 위해 
HomeInfo를 재구성하였다.


서버로부터 받은 추천데이터를 기반으로 개인 로그에 대해서 접근하도록 구성했다.

|![](https://i.imgur.com/a1mSykU.jpg)|![](https://i.imgur.com/ozwzTF6.jpg)|![](https://i.imgur.com/TVHWdcJ.jpg)|
|:--:|:--:|:--:|
|로그 부족 시|개인 추천 가능|로그인 안한 유저|