swift 177

[iOS] UICollectionView에 대해서 알아보기 6편 (Realm, async, await, Delegate)

UICollectionView에 대해서 알아보기 6편 (Realm, async, await, Delegate) 드디어 6편이다! 올해 봄, 기본기의 부족함을 너무 크게 느껴서, 기본기부터 다시 돌아보는 시간을 가졌는데, 이번에 Realm과 FelxLayout, PinLayout 등을 학습하면서 확실히 이전보다 더 빠르고 잘(?) 이해가 되는 것 같다. 모든 코드는 SPM으로 빌드가 가능한 상태로 올려드립니다. (주요내용) 이번에는 Realm과 Delegate를 활용해서 어떻게 처리하는지 알아보고 async, await을 활용해서 클로저를 없애고, RxSwift랑 잘 묶어보자! 🌿 UI 결과물 🌿 셀 내에 업데이트 버튼이 위치한다. 즉, 셀 내에서 CRUD작업 중 UD에 해당하는 작업을 처리한다. (CR은..

[iOS] 내가 보려고 기록하는 Realm 구조 설계하기 및 @escaping

내가 보려고 기록하는 Realm 구조 설계하기 및 @escaping 해당 포스팅은 제 기본 지식에 자주하는 실수를 기록하기 위해 작성했습니다. @escaping과 @nonescaping가 정말 궁금하다면 다른글을 찾아봐주세요. 자 이번에 Realm을 사용하는데 @escaping을 사용하기로 함. 설계를 UML로 하는데, 간단하게 UML을 사용해서 Static이나 Property Wrapper는 어떻게 표현해야하는지 고민이 되었다. Realm을 UML로 표현해보았다. (참고)를 보면 static의 경우에는 밑줄로 표현한다고해서 우선 이렇게 작성해 보았다. Realm을 학습을 하고있어서 어떻게 설계해야하는지 잘 모르지만, 해당 모델에서 처리하고자 했다. 셀에서 지워진 정보가 CollectionView에 반영..

[iOS] UICollectionView에 대해서 알아보기 3편 (동적 Cell)

UICollectionView에 대해서 알아보기 3편 ✅ 이번에는 CollectionView를 이용하여 height을 동적으로 구성하는 방법에 대해서 알아보자. 이 부분에 있어서는 여러개의 구글링을 하면서 여러개의 포스팅을 찾아보았다. - dummyCell 방법이 가장 흔한 것 같은데, 잘 안되었다. - 그래서 이 방법 사용 고고! - dummyCell의 경우에는 내 코드를 가져가서 리팩토링해서 알려주면 좋겠다,, 누군가 소스코드 🌿 결과물 🌿 ✅ 코드 /// 셀의 레이아웃 정보를 구성 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt ..

[iOS] UICollectionView에 대해서 알아보기 2편

UICollectionView에 대해서 알아보기 2편 이번에 해볼 작업들 1. 여러개의 섹션 헤더 및 푸터 만들어보기 2. 헤더에 이미지 넣기 3. 리프레시 컨트롤 넣기 4. 우측에 리프레시 넣기 5. 페이지네이션 (해결하지 못한 부분) - 헤더의 배너 부분을 pageViewController처럼 구현하고자 하였으나 아직 방법을 못찾음 - collectionView에 refreshControl을 달아서 사용자가 손을 떼는 순간에 이벤트가 들어가게 하려고 했으나 실패 입니다. 자료에 대한 소스코드 입니다. 사용한 Swift Package - RxSwift 6.5.0 - Snapkit 5.6.0 - RxGesture 4.0.4 1. 여러개의 섹션 헤더 및 푸터 만들어보기 컬렉션 뷰에서 섹션 헤더와 푸터를 만..

[ReactorKit] ReactorKit 공부하기 #2

ReactorKit 공부하기 #2 해당 문서는 ReactorKit 3.2.0을 기준으로 작성.이번에는 테스트코드를 작성해볼 예정 들어가기 전RxTest는 반드시 CocoaPod에서 Tests 쪽으로 타겟을 잡아줘야 빌드 오류 없이 편안하게 진행 가능함. 테스팅ReactorKit의 경우에는 테스트를 위한 함수가 내장되어 있어서, 손쉽게 View와 Reactor 둘 다 테스트 가능. 그렇다면 무엇을 테스트 해야하냐면 총 3가지를 테스트하면 좋음View Action :: 주어진 유저의 상호작용에 따라 적절한 action이 reactor로 보내지는가?State :: 주어진 state에서 view의 변수가 적절하게 set(저장) 되는가?ReactorState :: action에 따라 state가 적절하게 변경..

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴)

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴) Chain of Responsibility 패턴은 요청을 처리할 수 있는 여러 객체를 연결하여, 요청이 처리될 수 있는 객체를 찾는 행동 패턴.요청을 보낸 객체와 요청을 처리하는 객체를 분리하여, 요청을 처리할 수 있는 객체가 여러 개일 때 유용 히스토리2022-07-05: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 스스로 만든 예제로 변경   Chain-of-Responsibility PatternChain-of-Responsibility Pattern은 일반적으로 3개지 개념으로 구성됨Handler Protocol: 요청을 처리할 수 있는 인터페이스Concrete Handler: ..

[XCTest] XCTest에 대해서 알아보기 1편

XCTest에 대해서 알아보기 1편  XCTest를 공식문서를 통해 정리Nimble Quick 등도 다시볼겸 정리해보자.사이드 프로젝트에서 테스트코드 작성하면서 점차 더 다양한 테스트를 시도하고 있는데, 정리가 한번 필요할 것 같았음 유닛테스트는 여러 형태로 자주 사용하고 있고,UI테스트는 아직까지 다채롭게 사용하지는 못하는 것 같은데, 자동 완성 기능이 꽤나 쏠쏠해서 특정 플로우에 QA용으로 빠르게 작성해서 테스트 용으로 사용 중임. 퍼포먼스 테스트는 해본 적은 없지만 인스트루먼트 보면서 그냥 거기서 hang걸리거나 부족한 부분 없는지 체크중인데, 성능 최적화 부분에 대해서 컴파일러 최적화 등에 의존하지 않고, 직접 사용하고자 할 경우 특정 핫스팟을 발견해서 작성이 필요하다고는 알고 있음.  ✅ 공식문..

Swift 디자인패턴 Composite Pattern (복합체 패턴)

Swift 디자인패턴 Composite Pattern (복합체 패턴) Composite Pattern은 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 구조 패턴으로. 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 히스토리2022-06-15: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Composite PatternComposite Pattern은 일반적으로 3개지 개념으로 구성됨Component: 공통 인터페이스를 정의Leaf: 구현된 객체를 나타내며, 더 이상 자식 객체를 가지지 않음Composite: 자식 객체를 포함할 수 있는 객체로, 자식 객체를 추가하거나 제거할 수 있는 메서드를 제공복합..