EitherEither는 주로 두 가지 케이스 중 하나의 타입을 갖도록 하는 표현 방식이다.Either는 enum으로 구현할 수 있으며, 대표적으로 자주 사용하는 Result 타입이 있다. 예를 들어, 성공적인 결과와 실패한 결과를 구분하여 반환하는 Result 타입이 있다.Result는 반환될 때 결과가 성공이어서 특정 타입으로 반환되는 경우뿐만 아니라, 실패하여 특정 에러를 반환해야 하는 경우가 있기 때문에 특정 타입 또는 에러로 반환하기 위해 Either라는 개념을 활용한다. Either의 정의enum Either { case left(L) case right(R)} 만약 위의 코드를 enum이 아닌 struct로 구현하게 된다면 'L 이면서 R' 또는 'L과 R이 둘 다 아님'과 같은 ..
SWIFT
Disposable Observable의 라이프사이클이 Completed event나 Error event로 종료되면 모든 리소스를 정리하고 Dispose 된다. Combine의 AnyCancellable과 유사한 개념이다. Dispose가 수행되는 시점은 아래의 코드와 같이 작성하면 확인할 수 있다. let s = Observable.from([1, 2, 3]) .subscribe(onNext: { elem in print("Next", elem) }, onError: { error in print("Error", error) }, onCompleted: { print("Completed") }, onDisposed: { print("Disposed") }) onDispose는 어떤 이벤트에 대한 em..
RxSwift에서 데이터의 전달을 위해서 Observable과 Observer라는 개념이 등장한다. Observable 이름 그대로 '관측 가능한' 객체를 의미하며, 다양한 방식으로 데이터를 비동기적으로 전달하는 역할을 수행한다. Combine에서 Publisher와 유사한 개념이며, 하나 이상의 Observer가 실시간으로 이벤트에 반응할 수 있도록 새 값을 방출(emit)한다. Emission Observable이 이벤트를 방출하는 것을 Emission이라고 한다. Next 이벤트 수행을 통해 다양한 값을 전달하며, 라이프사이클 내에 한 번도 수행되지 않을 수도 있다. Completed / Error Observable의 라이프사이클 가장 마지막에 수행되는 작업이며, Emission이 아니라 일종의 ..
개요 iOS, Server & DB 개발 팀으로 진행하는 프로젝트입니다. SwiftUI를 효과적으로 사용하기 위해 최소지원버전은 iOS 15로 잡았고, Moya, Combine 등을 활용하여 제작하였습니다. 해당 앱은 유저들이 자유롭게 업로드한 사진과 캡션을 무작위로 배정하여 반복적으로 1:1 매칭을 진행하는 게임입니다. 최종적으로 단 한 개의 선택지가 남으면 게임이 종료되며, 다른 유저들이 가장 많이 선택한 선택지를 비교하며 공유하고 즐길 수 있습니다. 현재 앱스토어에 성공적으로 출시되어 서비스되고 있으며, 유저 피드백을 통해 업데이트를 진행 중입니다. 수행 기간 2023.9.5 - 프로젝트 설계 및 구현 시작 2023.12.4 - v.1.0.0 앱스토어 출시 완료 앱스토어 링크 https://apps..
드래그 가능한 그리드를 만드는 것을 연습해보았다. 아마도 온리픽원 새로운 기능에 추가될 수 있을 것 같다. 우선 SwiftUI View를 하나 추가해서 여러 가지 색깔의 View를 그리드에 나타낸다. import SwiftUI struct MovableGridView: View { @State private var colors: [Color] = [.red, .blue, .green, .purple, .orange, .yellow, .brown, .cyan, .indigo, .mint, .pink, .black] var body: some View { ScrollView(.vertical) { let columns = Array(repeating: GridItem(spacing: 10), count: 3..