TIL 27

오늘 한 일 / 배운점

  • 14:00 팀 회의 & 코드 리뷰
  • 팀 과제 코드 작성
  • 20:00 팀 회의 & 코드 리뷰

과제

  • 팀 과제 코드 작성

느낀점

1

오늘은 UIImagePickerController로
이미지 선택해서 프로필 사진에 이미지 넣는 거랑
UserDefaults 사용해서 유저 프로필을 불러오고 변경하는 것 적용했다.

UserDefaults 관련해서 어떻게 짜야 할지 정리하는 데 오래 걸렸는데

1

  1. UserDefaults에 담기는 시점
    → 데이터 변경 시점(프로필 편집 완료 누를 때, 동영상에 좋아요 누를 때 등)마다
    UserDefaults에 담을지 아니면 특정한 이벤트(로그아웃 등)에서 한꺼번에 UserDefaults에 담을지

  2. 유저의 좋아요가 저장될 곳이 없음
    → 동영상에 좋아요 눌러서 따로 좋아요 누른 동영상을 보여주는 화면이 있는데
    로그아웃해도 유지가 되려면 지금 있는 User 구조체에 새로운 프로퍼티를 추가해야 할지

  3. UserDefault에 어떻게 담을지
    → ❶ 회원가입 후 유저의 계정 정보가 담기는 userData: [User] 배열
    ❷ 현재 로그인 상태인 계정 정보가 담기는 loginUser: User 배열
    이렇게 두 가지가 있는데 UserDefaults로부터 userData를 끌고 와서
    현재 loginUser와 일치하는(ID 값으로 매칭?) 유저의 값을 업데이트하고
    변경된 userData를 UserDefault에 다시 담을지

내 화면에서만 쓰이는 것이 아니라 의논해야 하기도 했고
내가 생각하지 못한 부분도 있을 것 같아서 슬랙에서 다른 팀원분들께 물어봤는데

먼저 UserDefaults에 담기는 시점은 변경 값이 있을 때마다 그때그때 담아주기로 하였고

좋아요가 저장될 곳이 없는 문제는

struct Video: Equatable, Codable {
    static func == (lhs: Video, rhs: Video) -> Bool {
        return lhs.title == rhs.title && lhs.channelTitle == rhs.channelTitle
    }
    let title: String
    let thumbnailURL: URL
    let viewCount: String
    let channelTitle: String
    let tags: [String]
    let publishedDate: String
    let videoId: String
    let description: String
    var isLiked: Bool
}
struct User: Codable {
    var Id: String
    var password: String
    var profileImage: Data?
    var userName: String
    var userEmail: String
    var likedVideos: [Video]? // 새로 추가
}

위와 같이 User에 기존에 있던 Video 구조체 타입의 likedVideos라는 프로퍼티를 추가해서 해결하기로 했다

그리고 UserDefaults에 담는 방법은 나는 UserData만 UserDefaults에 들어가는 줄 알았는데
앱을 다시 실행시켜도 로그인 상태가 남으려면 loginUser도 들어가야 한다고 하여
데이터 변경 시점마다 두 개 다 UserDefaults로 저장하는 식으로 했다

2

3

아직은 로그인 화면이 구현되지 않아서 임시로 더미 데이터를 만들어서 내 코드에 적용해 나갔는데
역시나 하면서 계속 예기치 못한 부분에서 이상한 결과물이 나와서
로그 찍어가며 찾느라 한 시간은 날린 것 같다 ㅋㅋ..

그래도 일단 하루 남기고 아슬하게 내 담당 화면 기능 구현은 무사히 끝난 것 같아서 한시름 놓인다😮‍💨

이제 내일은 저 대충 짜놓은 UI 좀 다듬고
아슬아슬하게 붙어있는 오토 레이아웃… 잡아놓고

저녁에 다 같이 모여서 앱 전체적으로 UI 한번 더 다듬고
다 연결했을 때 문제만 없으면 끝이다! 내일도 파이팅!