kimhyeri/WeatherAPP

Save selected city

kimhyeri opened this issue · 3 comments

UserDefault 활용

  • Coordinate구조체 형식으로 저장
  • 현재 위치는 저장하지 않으며, 검색으로 찾은 city들만 저장함.
  • 현재 위치는 항상 index 0 에 저장하기 때문에 저장할 Coordinate는 index 0을 제거한 나머지를 저장하는 형태로 진행함.
if myCities.count > 1 {
               let exceptData = myCities.remove(at: 0)
               UserDefaults.standard.set(try? PropertyListEncoder().encode(exceptData), forKey:"cities")
}

위에 myCities자체 검사 할 필요가 없었음.
유저가 선택한 도시만 myCities에 추가할거고 current location은 저장할 필요 없음.
그래서 이렇게 변경함.

private var myCities:[Coordinate] = [Coordinate]() {
        didSet {
            UserDefaults.standard.set(try? PropertyListEncoder().encode(myCities), forKey:"cities")
        }
}

current location은 뷰 뜰때 항상 업데이트 함.
myCities에 저장은 안함.

내 위치에 대한 날씨는 항상 상단에 놓아야 함.
currentLocation lat lon이랑 response.body.coord의 lat lon (위 경도) 체크해 줌.

Solved Issue 🙆‍♀️