swiftUI 8

UIViewRepresentable View 레이아웃 업데이트 (UILabel Height 조절), SwiftUI lineBreakMode

SwiftUI로 프로젝트를 진행하면서 SwiftUI에서 제공해주는 기본 UIComponent로는 커스텀할 수 없는 영역도 분명 존재한다. 그래서 종종 UIKit에서 사용하는 컴포넌트를 SwiftUI View 구조체에 삽입하고는 하는데, 이때 발생한 트러블슈팅에 관련된 내용을 게시하려고 한다. SwiftUI에 UIKit의 UIView를 사용하려면 UIViewRepresentable 프로토콜을 채택한 struct를 사용해야한다. https://developer.apple.com/documentation/swiftui/uiviewrepresentable 기본적으로 UIViewRepresentable을 채택하면 해당 구조체는 다음 두 함수를 필수로 구현해야 한다. public protocol UIViewRepr..

회고 2024.02.05

TCA - Environment는 어디갔나?

Environment는 어디갔나? TCA는 State, Action, Reducer, Environment, View, Store를 기본 구성으로 갖는다. 이전 포스트에 위와 같은 말을 한 적이 있다. 근데, 예제를 설명하면서 State, Action, Reducer, View, Store 객체에 대한 설명은 했지만 Environment 객체는 찾아볼 수 없었다. (의존성이 객체 형식으로 Reducer에 주입된 것이 아니라 코드로 이어붙이기했다.) 이는 TCA가 최신 버전으로 Release 되면서 TCA 아키텍처를 코드로 정의할 때 아키텍처의 일부 구성이 변경되었기 때문이다. 지난 게시글의 예제 화면에 숫자와 이 숫자를 증가할 수 있는 + 버튼, 감소할 수 있는 - 버튼, 더 다양한 행동을 위해 탭 하면..

Swift 2023.07.10

TCA(The Composable Architecture)란?

최근에 TCA에 관련되어 자료조사할 일이 생겨서 TCA 공식 문서와 공식 업데이트, 개발 방향에 대해 공부한 것을 정리해보려고 한다. TCA pointfree에서 Brandon Williams와 Stephen Ceils가 만들어낸 아키텍처 TCA는 The Composable Architecture의 약자로서, 구성, 테스트 및 인체 공학적으로 개발자가 일관적으로 이해하여 애플리케이션을 구축할 수 있도록 도와주는 라이브러리이다. SwiftUI, UIKit 등 모든 Apple 플랫폼(iOS, macOS, tvOS 및 watchOS)에서 사용할 수 있다. The Composable Architecture can be used to power applications built in many frameworks,..

Swift 2023.07.06

SwiftUI Firebase와 KakaoTalk 로그인 연결하기

1. 개요 국내 앱은 대부분 소셜로그인 플랫폼으로 카카오톡 로그인 서비스를 제공한다. 카카오톡과 연결된 서비스를 제공하기 위해서는 앱에 카카오톡 API를 사용해야한다. 이번 글에서는 내가 구현했던 카카오톡 로그인 서비스를 Firebase Authentication으로 연동하는 방법을 소개하고자 한다. 먼저, Firebase Authentication은 다음과 같은 소셜 로그인 서비스와 연동할 수 있다. 카카오톡 서비스는 추가 제공업체에 등록되어있지 않으므로 Firebase Authentication와 연동하기 위해서는 기본 제공업체인 이메일 / 비밀번호 방법으로 로그인을 해야한다. 카카오톡으로 Firebase Authentication으로 로그인 하는 과정은 다음과 같다. 카카오톡 로그인 -> Fireb..

SwiftUI 2023.01.25

SwiftUI Firebase Email Auth Login 구현하기

1. 개요 앱을 만들다보면 서버를 이용해서 로그인하는 기능이 필요로할 때가 있다. 이 때, 자체적인 회원가입을 통해 로그인을 하게 할 수도 있다. 요즘에는 SNS 계정 연동으로 로그인하는 경우가 많지만, 이번 게시글에서는 Email Auth를 사용하여 FirebaseAuth에 회원가입을 통해 회원 계정 정보를 등록하고 등록한 정보로 로그인하는 과정을 기록한다. 또한 앱 종료 후 다시 실행시켰을 때 이전 로그인한 기록을 가지고 자동로그인하는 방법도 구현하였다. 2. Firebase와 프로젝트 연결하기 Firebase 프로젝트와 Xcode 프로젝트 생성은 이전 포스팅과 같다. 이미 방법을 알고 있다면 중간에 패키지 추가사항만 확인해두면 되겠다. 먼저, Xcode에서 프로젝트를 생성한다. 프로젝트 생성시 정해..

SwiftUI 2022.12.23

SwiftUI Firebase Auth - Google Account 연동하기

1. 개요 앱을 만들다보면 서버를 이용해서 로그인하는 기능이 필요로할 때가 있다. 이 때, 자체적인 회원가입을 통해 로그인을 하게 할 수도 있지만 대게 다른 소셜 계정을 통해서 로그인하는 방법이 편리할 때가 있다. FirebaseAuth에서는 다양한 소셜 계정으로 서버에 로그인하는 방법을 지원하는데, 여기서 Google 계정을 이용해서 로그인하는 방법을 적용해보고자 한다. 또한 앱 종료 후 다시 실행시켰을 때 이전 로그인한 기록을 가지고 자동로그인하는 방법도 구현하였다. 2. Firebase와 Xcode 연결하기 Firebase 프로젝트와 Xcode 프로젝트 생성은 이전 포스팅과 같다. 이미 방법을 알고 있다면 중간에 패키지 추가사항만 확인해두면 되겠다. 먼저, Xcode에서 프로젝트를 생성한다. 프로젝..

SwiftUI 2022.12.23

SwiftUI Firebase Realtime Database CRUD 제대로 사용하기

1. 개요 Firebase 실시간 데이터베이스는 클라우드 호스팅 데이터베이스이다. 데이터는 JSON으로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화되는 장점이 있다. 또한 Firebase Realtime Database는 모든 클라이언트가 하나의 실시간 데이터베이스 인스턴스를 공유하고 자동으로 최신 데이터 업데이트를 할 수 있어서 여러 플랫폼(Android, iOS 및 JavaScript SDK)으로 교차 플랫폼 앱을 구축할 때 유용하다. 나는 SwiftUI로 Firebase Realtime Database를 공부하는데, CRUD(쓰기, 읽기, 수정, 삭제) 을 제대로 다루는 방법을 찾고자 했다. 내가 직면한 문제는 CRUD는 모두 정상 작동 하지만, 실시간 데이터 읽기 시 각 이벤트가 발생할 때..

SwiftUI 2022.12.08

ATS Policy에 의한 HTTP 통신 제약

SwiftUI를 이용해서 Web에 있는 JSON API를 호출할 때 다음과 같은 코드를 사용한다. class WebService { func fetchData(url: String) async throws -> [Person] { guard let url = URL(string: url) else { return [] } let (data, _) = try await URLSession.shared.data(from: url) let nkdata = try JSONDecoder().decode([Person].self, from: data) return nkdata } } 하지만 학습하거나 테스트를 할 때 종종 우리는 에러를 마주하곤한다. 내가 학습하면서 확인한 에러는 다음과 같았다. 나는 정부에서 제공..

SwiftUI 2022.11.28