Realm 간단하게 구조 적용하기
Relam을 도입했는데, 구현과 인터페이스를 분리해 재사용을 높이고자 함.
- Realm 간단하게 적용해 볼 예정
예제 영상
시도한 것
Realm을 사용하는데 update 메소드를 조금 변경해봄
- 셀 내에 많은 데이터들이 있는데, 셀에서 일부 데이터만 수정하는 경우 업데이트를 시도
- 근데 어떤 값을 설정할지 지정해주면 하나의 메서드로 처리해 응집도 및 재사용성을 높일 수 있음
추후에 Note와 관련하여 Service를 만드는 방향으로 수정합니다.
Realm 설계 구조 변경
애플에서는 DataModel이라고 해서 각 모델 단위(?)로 관리하는 것처럼 보임.
- 개인적으로는 애플 예제 형태로 운영되면 너무 많은 레이어들이 모델에 의존하게 되는 형태라 결합도가 너무 높아질 것 같다는 생각이드는데 우선 애플이 보여주는 형태로 개선해보자.
코드 변경 사항 적용
extension Note {
/// 업데이트 타입을 정의
enum UpdateType {
case all
case content
case bookmark
}
/// 해당 노트를 업데이트
static func updateNote(note: Note, indexPath: IndexPath, forType type: UpdateType) async throws -> Void {
// NOTE: - Realm은 이렇게해서 업데이트가 가능하다.
try! realm.write {
switch type {
case .content:
note.content = String.createRandomString(length: 30)
case .bookmark:
note.isBookmarked = !note.isBookmarked
case .all:
note.content = String.createRandomString(length: 30)
note.isBookmarked = !note.isBookmarked
}
return
}
}
}
'apple > iOS' 카테고리의 다른 글
[iOS] UICollectionView CompositionalLayout (0) | 2022.09.18 |
---|---|
[iOS] DiffableDataSource n-Section n-Item (섹션마다 다른 셀) (0) | 2022.09.18 |
[Realm] Realm migration (Swift) (0) | 2022.09.05 |
[Realm] The document “default.realm” could not be opened. (0) | 2022.09.05 |
[Realm] Realm CRUD more modern and swifty (0) | 2022.09.04 |