본문 바로가기

전체 글213

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.
Supabase PostgreSQL custom function 사용하기 Supabase를 직접 iOS 개발 시 사용해 보며 느꼈던 Supabase의 최대 장점은 바로 custom function이었습니다. Supabase는 PostgreSQL를 사용하는 database인데, custom function은 필요한 PostgreSQL function을 사용자가 직접 만들어서 function 이름으로 바로 쿼리가 가능하게 해주는 기능입니다. 사용 방법 만든 function은 rpc라는 method를 통해서 사용할 수 있습니다. let value: String = try await supabase.database .rpc("hello_world") .execute() .value 위에 예시는 "hello_world"라는 이름의 function을 사용하는 방법을 보여주고 있습니다. .. 2024. 1. 13.
SupaBase Swift로 사용해보기 개인 프로젝트를 할 때 백엔드 서비스로 매번 Firebase를 사용하다가, 최근 커뮤니티 모임에서 Supabase를 알게 되어 새로운 프로젝트에 적용해보게 되었습니다. Supabase는 'Firebase 대체 서비스'라고 소개되어 있는 만큼, Firebase에서 제공하는 대부분의 기능들 DB, Storage, Login(Auth), Realtime 등을 지원합니다. Firebase는 익숙하고 편리하기는 하지만 복잡한 쿼리를 할 때 불편한 구석들이 좀 있었습니다. 반면에 Supabase는 PostgreSQL로 직접 쿼리를 만들어 사용할 수 있다는 점이 가장 큰 매력으로 느껴졌고, 이번에 한 번 경험해보고자 사용하게 되었습니다. 1. SupaBase Supabase는 PostgreSQL hosting 서비스.. 2024. 1. 8.
Error: Library not loaded 혹은 Class ... is implemented in both ~ SPM을 사용하고 있고, 새로 더 추가한 라이브러리도 없으며 좀 전까지만 해도 잘 빌드해서 simulator run도 되었는데, 갑자기 Library not loaded 혹은 Class ... is implemented in both ~라는 로그가 생긴 일이 있었습니다. 두 에러 다 RxSwift가 명시되어 있었는데, 딱히 라이브러리 관련해서 나오는 구글링 답변은 없었습니다. 그러다가 Clean Build와 Derived Data를 삭제해 보고 run을 해보았더니 원래대로 정상적으로 build & run이 되었습니다. 혹시나 이런 에러를 겪는다면 한 번 두 가지 방법을 사용해보시기 바랍니다..! 2024. 1. 1.
FlexLayout 사용 시 에러 주의 사항 FlexLayout을 SPM으로 설치하는 경우 아래와 같은 에러가 발생할 수 있습니다. Could not build Objective-C module 'FlexLayoutYogaKit' 이런 경우에는 TARGET > Build Settings > Preprocessing Macros 로 가서, 'FLEXLAYOUT_SWIFT_PACKAGE=1' 를 추가해 주면 됩니다. Scheme 타이틀 옆에 커서를 대면 "+"버튼이 나오는데, 클릭하면 아이템이 추가 됩니다. (설치 설명 부분에 나와있습니다. https://github.com/layoutBox/FlexLayout#in-an-xcode-target) 2023. 12. 31.
Custom URL Scheme으로 앱 redirect 하기 Firebase나 Supabase와 같은 Auth 서비스를 제공해 주는 플랫폼에서 Email 인증을 사용해보신 분이라면 URL Scheme을 이용한 앱 redirection을 해보셨을 겁니다. 어떠한 기능인지와 사용 방식에 대해 알아보겠습니다. Custom URL scheme Custom URL scheme은 앱 내부의 리소스를 참고할 수 있도록 해줍니다. 위에서 언급한 이메일 인증의 경우, 해당 플랫폼에서 이메일을 보내면 그 안에 URL link가 들어있었을 겁니다. 그 링크를 탭하면 내 앱으로 돌아가게 되는데, 그 링크가 바로 Custom URL scheme인 것입니다. 더보기 NOTE 애플에서 사용할 수 있는 딥링킹의 형태는 URL Scheme과 Universal link가 있습니다. 보안상의 이유.. 2023. 12. 30.
iOS 프리뷰, 스크린샷 이미지 alpha 제거방법 App Store에 배포를 하기 위해서는 프리뷰 영상이나 스크린샷을 올려주어야 합니다. 사이즈에 맞게 업로드를 해놓고 다른 항목들 채워주고 있는데, 투명한 부분이 있다고 업로드가 안 된다는 알림이 표시되어 있었습니다. 투명한 부분이 없는 것 같은데 😱 다행히 맥에서 기본으로 제공해주는 Preview앱에서 Alpha를 제공해주는 기능이 있어 쉽게 해결할 수 있었습니다. Alpha 없애는 방법 1. 이미지 열기 2. Command-Shift-S 누르기 (복사본 만드는 단축키입니다.) 3. Command-S 누르기 (저장하는 단축키입니다.) 3번까지 하면 창이 하나 뜨게 됩니다. 4. 창 하단에 "Alpha" 체크박스에서 체크 해제하기. 5. 원하는 이름으로 저장하기 (기존 이미지에 덮어쓰고 싶다면 기존 이미.. 2023. 12. 19.
반응형