전체 글24 Swift에서의 렌즈(Lens) - Link 이번엔 더 복잡한 객체를 만들어 볼게요. 먼저 렌즈 함수를 다시 볼게요 struct Lens { let view: (Whole) -> Part let set: (Part, Whole) -> Whole} 스트리머의 채널정보를 알 수 있도록 속성을 하나 더 추가해 볼게요.struct Channel { let subscribers: UInt let videos: UInt} 좀 더 복잡한 객체가 되었습니다.struct Streamer { let name: String let mainPlatform: String let channel: Channel} 카더정원이라는 유튜버를 만들었습니다.let youtuber = Streamer( name: "카더정원", m.. 2025. 3. 15. Swift에서의 렌즈(Lens) - Basic 복잡한 데이터구조에서 특정구조에 접근하는 방법을 Lens라는 함수객체로 알아보도록 하겠습니다.먼저 전체에서 부분을 가져오는 함수를 만들어 보겠습니다.Whole -> Part (getter) 전체에서 부분만 수정하는 것도 필요할 거예요 (setter)Part, Whole => Whole여기서 Part => Whole가 아닌 이유는Whole에서 Part를 제외한 다른 부분은 기존의 Whole에 있던 것 그대로 있어야 하기 때문입니다. 그럼 이제 이러한 특성을 가진 함수객체 Lens를 만들어보겠습니다.//함수객체를 생성할때 get함수와 set함수를 지정해 줄 수 있습니다.struct Lens { let view: (Whole) -> Part let set: (Part, Whole) -> Who.. 2025. 3. 13. 제네릭과 프로토콜을 활용하여 타입을 확장시키기 제네릭 & 프로토콜제네릭과 프로토콜을 결합하면 타입 안전성과 유연성을 모두 얻을 수 있습니다. 이는 RIBs 아키텍처나 고급 Swift 라이브러리에서 흔히 볼 수 있는 패턴입니다.import UIKit// 걷기 행동 프로토콜protocol Walking { func walk()}// 잡기 행동 프로토콜protocol Catchable { func grab()}// 영장류 정의 프로토콜protocol Primate: AnyObject { var feet: Walking { get } }// 제네릭 제약조건 추가class Walker: Primate { var feet: Walking init(walkingImplementation: WalkingType) { .. 2025. 3. 6. Tuist Feature Layer - OnBoarding 모듈 만들기 Tuist 프로젝트에서 Feature Layer를 구성하는 방법Tuist 프로젝트에서 도메인 레이어를 구성하는 방법에 대해 알아보겠습니다.1. Feature Layer 정의하기Feature Layer는, Feature Layer와 App과 Domain Layer 사이에 위치하여 앱의 기능(화면)을 담당합니다. 프로젝트 구조 설정프로젝트에서 필요한 디렉토리 구조를 아래와 같이 생성합니다:Manifests/├─ ProjectDescriptionHelpers/│ └─ FeatureLayer.swift # Feature Layer 설정을 위한 헬퍼 파일└─ Projects/ └─ Feature/ └─ Onboarding/ ├─ Interface/ .. 2025. 3. 4. 이전 1 2 3 4 ··· 6 다음