본문 바로가기

Swfit98

WidgetKit에서 CLLocationManager & WeatherKit 사용하기 애플의 날씨 앱은 사용자의 위치 정보를 알아내서 해당 위치의 날씨 정보를 위젯에서 보여줍니다. 날씨 앱처럼 위젯에서는 어떻게 위치 정보를 사용할 수 있는 지, 그리고 날씨 정보는 어떻게 받아올 수 있는 지 알아보겠습니다. 먼저 위치 정보를 알아야 해당 위치의 날씨 정보를 알 수 있으므로 위치 정보를 받아오는 방법을 알아보겠습니다. 1. 위젯에서 사용자 위치 정보 사용 동의 항목 info.plist에 추가하기 사용자 정보를 사용할 때는 항상 Info.plist에 동의를 구하는 항목을 넣어주죠? Widget에서 위치정보를 사용하려면 NSWidgetWantsLocation key를 추가해야 합니다. 이 키는 App의 Info.plist가 아닌 Widget의 Info.plist에 추가해줘야 합니다. (기본적으로.. 2024. 1. 23.
Widget에 보여줄 정보 Firebase에서 불러오기 제가 작업하고 있는 앱은 WidgetKit과 Firebase Storage를 사용하고 있습니다. Widget에서도 앱에서와 마찬가지로 DB에 저장되어 있는 데이터를 보여주어야 하는데, 어떻게 할 수 있는지 알아보도록 하겠습니다. 1. GoogleService-Info.plist 파일 타겟 멤버십에 Widget target포함시켜주기 처음에 가장 난감했던 건 Firebase에서 사용하는 GoogleService-Info.plist를 어떻게 처리하느냐 였습니다. Widget도 별도의 bundle identifier를 가지고 있으니 이걸 추가를 어떻게 해줘야 하는 건지? Widget이라고 따로 Firebase project를 만들 것 같지는 않은데 등등 여러 생각이 들었지만, 사실 해답은 매우 간단했습니다. .. 2024. 1. 23.
some (opaque type)으로 type 숨기기 Opaque type의 특징은 caller는 해당 값이 구체적으로 어떤 것인지 알수 없다는 점입니다. 그래서 이름도 불확실하다는 의미에서 opaque인 거겠죠? 그렇다면 이런 opaque type이 왜 구체적인 타입을 숨기는 지, 숨김으로써 얻게 되는 이점은 무엇인지 알아보겠습니다. 아래 예시를 보면, Farm이라는 객체 안에 hungryAnimals라는 Collection타입의 변수가 있고 해당 변수를 looping하며 연산을 하는 feedAnimals()라는 메서드가 있습니다. extension Farm { var hungryAnimals: LazyFilterSequence { animals.lazy.filter(\.isHungry) } func feedAnimals() { for animal in .. 2024. 1. 23.
some에 대해 알아보기 (any와 비교) some은 any처럼 protocol 앞에 붙일 수 있는 키워드이고 기능도 any와 비슷해 보여 설명을 읽어봐도 잘 와닿지 않았습니다. Opaque type이라고도 불리는 some은 보통 '역제네릭 타입, caller에게 concrete type을 숨기기 위함이다' 라는 말로 주로 설명이 되어있습니다.모두 맞는 말이지만 이해는 잘 안되고 "그냥 any 쓰면 안되는 건가?" 라는 생각만 들더라구요. 그러던 중에 Apple에서 제공한 영상을 보고 확실히 용법 차이가 이해가 되어서 기록해봅니다. 그 둘 간의 차이를 표로 먼저 정리해서 보겠습니다. some (default로 사용 권장) any 타입 정보 유무 O Hold fixed concrete type. (구체적인 타입에 대한 정보를 가짐.) Infer .. 2024. 1. 22.
WidgetKit - Timeline Provider 보호되어 있는 글 입니다. 2024. 1. 19.
SwiftUI에 MVVM 적용이 필요한가? 몇 개월 전에 SwiftUI에 MVVM 적용을 하지 맙시다! 라는 제목의 article을 본 적이 있습니다. 제목을 보고 'MVVM도 만능이 아니군' 이라는 생각이 들었는데, 이번에 관심을 가지고 해당 토픽에 대해 좀 더 알아보게 되었습니다. 왜 SwiftUI에 MVVM이 필요가 없는가? 일단 MVVM은 Model View ViewModel의 약자로 UI를 담당하는 View로직과 데이터를 처리하는 ViewModel을 깔끔하게 나누는 것에 관심을 갖는 패턴입니다. 저도 항상 사용해왔던 패턴입니다. 이 패턴을 사용하던 것에 익숙해지다보니, SwiftUI에서도 자연스럽게 사람들이 사용하고 있었던 것 같습니다. 하지만 사실 SwiftUI의 'view'는 어떤 종류의 타입도 conform 할 수 있는 protoc.. 2024. 1. 18.
반응형