· 성취/개선/학습한 내용 🏆
오늘은 권한의 끝판왕 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 |