Swift15 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. Build Setting 시 경로 매크로 알아보기 SRCROOT 해당 프로젝트의 타겟 소스가 포함된 디렉토리를 의미합니다. 해당 TestFoundation 프로젝트의 빌드세팅에서 SRCROOT를 입력시 아래의 TestFoundation 모듈의 디렉토리의 경로가 입력됩니다. BUILT_PRODUCTS_DIR 해당 빌드에 대한 결과값이 있는 경로를 나타냅니다. 빌드시 나오는 결과물(번들 및 실행파일)을 저장하고 있는 곳입니다. 빌드 오류가 나올 때 Derived Data경로에 접근하게 되는데 해당 결과가 바로 BUILT_PRODUCTS_DIR 입력시 나오는 곳입니다. BUILT_PRODUCTS_DIR 설정 시 해당 Derived Data에서 현재 타겟에 대한 빌드 디렉토리까지 접근하게됩니다. PROJECT_NAME 해당 빌드세팅에서의 타겟을 감싸고 있는 프.. 2023. 10. 16. 이전 1 2 3 4 다음