TIL - 2024.01.24 수요일

· 성취/개선/학습한 내용 🏆

 오늘은 권한의 끝판왕 coreLocation의 권한 설정과 승인 상태에 따른 이벤트를 학습했다. 쉽지는 않았지만 아직 할만한 것 같기도.. ㅎㅎ 그리고 이 과정에서 DispatchQueue 역시 맛보기를 했는데, 내일 조금 더 딥하게 학습할 예정이다. 나중에 정리할 예정이지만 DispatchQueue를 아르바이트생이라고 생각하면 조금 더 이해하기가 쉽다!

 

  • Authorization Status
  • Core Location
  • Enum
    • @frozen
    • attributes
  • DispatchQueue

 

· 어려웠던 내용 😵😵‍💫

  • Core Location의 권한을 주고, 승인 상태에 따라서 어떻게 할건지 코딩하는 흐름이 살짝 어려웠다. 조금 여기 코드 왔다가 저기 코드 갔다가 하는 느낌이지만, 몇 번 해보면 충분히 익숙해질 것 같다.
  • Alert를 보여주는 메서드가 있다면 여기에 @escaping Closure를 이용해 동적으로 사용할 수 있다고 한다. 예를 들어 버튼이 2개인 곳에는 2개만, 3개인 곳에는 3개를 쓸 수 있는 것이다. 클로저를 활용하고 열거형을 사용하면 정말 코드도 짧아지고 간단하게 구현도 가능하다. 
    func showActionSheet(actionList: [Theater.TheaterType], completionHandler: @escaping (UIAlertAction) -> Void) {
        
        let sheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
        for item in actionList {
            let alertAction = UIAlertAction(title: item.rawValue, style: .default) { value in
                completionHandler(value)
            }
            sheet.addAction(alertAction)
        }
        let alertAction = UIAlertAction(title: "취소", style: .cancel)
        sheet.addAction(alertAction)
        
        present(sheet, animated: true)
        
    }

위와 같은 식으로 코드를 정의한 정의한 다음 아래와 같이 간단하게 짧은 코드로 사용이 가능하다. 버튼이 몇개가 필요하든 말이다.

    @IBAction func filterButtonClicked(_ sender: UIButton) {
        
        let actionList = Theater.TheaterType.allCases
        
        showActionSheet(actionList: actionList) { action in
            
            self.deleteAnnotation()

            let result = action.title == "전체보기" ? self.theaterList : self.theaterList.filter({ $0.type == action.title })
            for item in result {
                self.setMap(item: item)
            }
        }
        
    }

 

 

· 궁금한 내용과 부족한 내용 ⁉️🤔

  • 이왕 MapKit을 사용했으니, annotation을 커스텀 하고 싶다. 그러려면 AnnotationView를 써야하지만, 아직 나에겐 어렵다...

 

· 느낀점 🌟

 '아는 것이 힘이다'라는 말이 크게 와닿을 정도로 알면 알수록 배우면 배울수록 코드를 효과적으로 작성할 수 있겠다는 생각이 든다. 다만 아직 덜 체화된 건지는 모르겠지만, UIkit 위주로 하다 보니 SwiftUI에서는 어떻게 적용할지 아직 감이 잡히지는 않는다. 그리고 배운 것과 사용할 수 있는 것에는 차이가 있다는 것을 확실하게 깨달았다. 배우더라도 사용해보지 않는다면 몸에 익지 않고 실제로 쓸 수 없다. 배운 뒤 꼭 적용해 보자!!

'# TIL (Today I Learned)' 카테고리의 다른 글

TIL - 2024.01.26 금요일  (0) 2024.01.26
TIL - 2024.01.25 목요일  (0) 2024.01.25
TIL - 2024.01.23 화요일  (0) 2024.01.23
TIL - 2024.01.20 토요일  (0) 2024.01.20
TIL - 2024.01.19 금요일  (0) 2024.01.19