swift 184

Realm 간단하게 구조 적용하기

Realm 간단하게 구조 적용하기 Relam을 도입했는데, 구현과 인터페이스를 분리해 재사용을 높이고자 함.Realm 간단하게 적용해 볼 예정 예제 영상   시도한 것Realm을 사용하는데 update 메소드를 조금 변경해봄셀 내에 많은 데이터들이 있는데, 셀에서 일부 데이터만 수정하는 경우 업데이트를 시도근데 어떤 값을 설정할지 지정해주면 하나의 메서드로 처리해 응집도 및 재사용성을 높일 수 있음 추후에 Note와 관련하여 Service를 만드는 방향으로 수정합니다.  Realm 설계 구조 변경애플에서는 DataModel이라고 해서 각 모델 단위(?)로 관리하는 것처럼 보임.개인적으로는 애플 예제 형태로 운영되면 너무 많은 레이어들이 모델에 의존하게 되는 형태라 결합도가 너무 높아질 것 같다는 생..

Realm Swift Migration

Realm Swift Migration 최근에 요구사항 중에 Realm을 마이그레이션 하는 작업이 있었다.마이그레이션 없이 된다면 가장 좋겠지만, 검색 쿼리 성능 등 마이그레이션이 근본적으로 더 나아 보였다. 공식문서에 따르면 앱 설치 후 모델을 변경할 경우 마이그레이션이 필요하다. 마이그레이션 이미지왼쪽 : 기존 모델오른쪽 : 새로운 모델 모델을 변경 후에 코드를 실행하면 크래시가 발생 즉, 마이그레이션 하라는 문구가 나타난다. 일단 기존 모델로 저장된 값들을 Realm-Studio를 통해 시각적으로 확인할 수 있음Relam Browser도 된다는데 M1 Mac에서 잘 안되어서 일단 이거 활용 DB 하면서 늘 느끼지만 시각적으로 보이는 것과 안보이는 것의 차이가 너무 크다. 샘플 코드 마이그레..

[Realm] The document “default.realm” could not be opened.

[Realm] The document “default.realm” could not be opened. Realm file is currently open in another process which cannot share access with this process. All processes sharing a single file must be the same architecture. For sharing files between the Realm Browser and an iOS simulator, this means that you must use a 64-bit simulator. MacOS에서 Realm broser 3.0.1 설치 후 해당 경로로 파일을 열어줄 때 발생시뮬레이터 끄고 하면 ..

Realm CRUD more modern and swifty

Realm CRUD more modern and swifty (링크)https://github.com/realm/realm-swift GitHub - realm/realm-swift: Realm is a mobile database: a replacement for Core Data & SQLiteRealm is a mobile database: a replacement for Core Data & SQLite - GitHub - realm/realm-swift: Realm is a mobile database: a replacement for Core Data & SQLitegithub.com Realm CRUD 코드 샘플코드 샘플을 통해 알아보자. import Foundationimport Rea..

[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

iOS 내가 보려고 기록하는 Realm 구조 설계 및 @escaping 내가 자주하는 실수를 기록하기 위해 작성 이번에 Realm 모델 설계를 변경하기로 결정했는데 Swift Concurreny 보다 클로저를 사용하기로 정함.클로저에는 @escaping과 @nonescaping이 존재.설계를 UML로 하는데, 간단하게 UML을 사용해서 Static이나 Property Wrapper는 어떻게 표현해야하는지 고민. UMLstatic의 경우에는 밑줄로 표현한다고해서 우선 이렇게 작성 각 모델이 직접 마이그레이션을 책임지도록 설계> 그래야 각 모델에 대한 변경사항이 한눈에 보여서 실수가 줄어듦 코드 스크린샷 (참고)https://jusung.github.io/Escaping-Closure/ [S..

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

[iOS] UICollectionView에 대해서 알아보기 3편 (동적 Cell) 동적으로 UICollectionView Cell을 구성해야 하는데, 아직까지 초보자라서 이거 많이 어렵다.구글링을 통해 다른 사람이 구현한 프로젝트 코드 Stackoverflow 등 엄청나게 많이 예제들을 참고했다. 구현 방향성DummyCell을 사용한 방법 (가장 많이 보이는 패턴이었음)이 형태를 연습해보고자 함. (2023.01.17 추가) 동적셀 요즘은 구현하기가 어렵지 않는데, 그냥 데이터에서 미리 사이즈를 모두 계산하고 처리함.일부만 동적인 경우가 있어서 하다보니 익숙해진 부분도 크다. 소스코드 🌿 결과물 🌿 샘플 코드 /// 셀의 레이아웃 정보를 구성 func collectionView(_ col..

UICollectionView 공부하기 2편

UICollectionView 공부하기 2편 이번에는 헤더랑 푸터 만들어보자 목표1. 여러개의 섹션 헤더 및 푸터 만들어보기2. 헤더에 이미지 넣기3. 리프레시 컨트롤 넣기4. 우측에 리프레시 넣기5. 페이지네이션 샘플 코드개발환경swift pacakge maanger를 통해 외부 의존성 일부 사용 RxSwift 6.5.0 Snapkit 5.6.0 RxGesture 4.0.4 1. 여러개의 섹션 헤더 및 푸터 만들어보기 컬렉션 뷰에서 섹션 헤더와 푸터를 만드는 만드는 방법은 아래의 메소드를 구현섹션과 헤더의 경우에는 각 섹션마다 나타나기에 필요한 경우에만 호출되도록 구현 /// collectionView에서 헤더와 같은 역할 func collectionView( _ collectionVie..

[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가 적절하게 변경..