EitherEither는 주로 두 가지 케이스 중 하나의 타입을 갖도록 하는 표현 방식이다.Either는 enum으로 구현할 수 있으며, 대표적으로 자주 사용하는 Result 타입이 있다. 예를 들어, 성공적인 결과와 실패한 결과를 구분하여 반환하는 Result 타입이 있다.Result는 반환될 때 결과가 성공이어서 특정 타입으로 반환되는 경우뿐만 아니라, 실패하여 특정 에러를 반환해야 하는 경우가 있기 때문에 특정 타입 또는 에러로 반환하기 위해 Either라는 개념을 활용한다. Either의 정의enum Either { case left(L) case right(R)} 만약 위의 코드를 enum이 아닌 struct로 구현하게 된다면 'L 이면서 R' 또는 'L과 R이 둘 다 아님'과 같은 ..
IOS
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..
iOS 개발에 있어서 다양한 디자인 패턴을 잘 이해하고 활용하는 것이 중요하다. 디자인 패턴은 수많은 개발자들이 시행착오를 겪으면서 제시하는 하나의 패러다임이라고 볼 수 있다. 일반적인 패턴과 iOS는 약간의 차이가 있다. iOS의 입장에서 생각하는 MVC와 MVP 그리고 MVVM을 정리하겠다. 애플에서의 MVC 특징 View와 Model 간의 의존성을 낮추기 위해 서로 분리 시킴 장점 가장 단순한 형태 설계 및 구현이 쉬움 UIKit 개발에 최적화되어 있음 단점 ViewController 파일 하나가 View와 Controller의 역할을 모두 수행함 따라서 View와 Controller를 분리해서 구현하기 어려움 프로젝트 규모가 커질수록 ViewController가 비대해짐 그럴수록 유지 보수 및 협..
드래그 가능한 그리드를 만드는 것을 연습해보았다. 아마도 온리픽원 새로운 기능에 추가될 수 있을 것 같다. 우선 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..