Realm 정리
Realm 정리
Realm은 빠르고 가벼운 모바일 데이터베이스로, SQLite보다 빠른 성능을 제공하며, 사용법이 간단함.
iOS에서 오프라인 데이터 저장이나 캐싱 처리에 많이 사용됨.
1. Realm의 특징
- 빠른 데이터 처리 → Core Data보다 읽기/쓰기 속도가 빠름
- 간편한 API →
write {}
블록을 사용해 저장/삭제 가능 - NoSQL 기반 → 테이블 대신 객체 기반 저장 (
class
사용) - 자동 업데이트 → 데이터 변경 시 UI가 자동 반영됨
- 오프라인 지원 → 네트워크 없이 로컬에서 데이터 유지
2. Realm 기본 사용법
1) Realm 설치
1
pod init
Podfile
에 아래 코드 추가 후 pod install
실행
1
pod 'RealmSwift'
2) Realm 데이터 모델 생성
Realm에서는 객체(Object) 형태로 데이터를 저장함.
1
2
3
4
5
6
7
8
import RealmSwift
class NotionPage: Object {
@Persisted(primaryKey: true) var id: String
@Persisted var title: String
@Persisted var parentId: String?
@Persisted var lastUpdated: Date
}
📌 @Persisted
를 사용해 속성을 정의하고, primaryKey
로 고유값 설정
3) 데이터 저장
1
2
3
4
5
6
7
8
9
10
11
let realm = try! Realm()
let page = NotionPage()
page.id = "123"
page.title = "Swift 공부"
page.parentId = nil
page.lastUpdated = Date()
try! realm.write {
realm.add(page)
}
📌 write {}
블록을 사용해 데이터를 저장
4) 데이터 조회
1
2
3
4
5
6
let savedPages = realm.objects(NotionPage.self)
for page in savedPages {
print("페이지 제목: \(page.title)")
}
📌 objects(클래스명.self)
로 데이터 불러오기
5) 데이터 수정
1
2
3
4
5
6
if let page = realm.objects(NotionPage.self).first {
try! realm.write {
page.title = "Realm 배우기"
}
}
📌 수정 시 별도 업데이트 함수 없이 write {}
안에서 변경하면 자동 반영
6) 데이터 삭제
1
2
3
4
5
if let page = realm.objects(NotionPage.self).first {
try! realm.write {
realm.delete(page)
}
}
📌 delete(객체)
로 데이터 삭제
4. 언제 Realm을 쓰면 좋을까?
- 빠른 읽기/쓰기 성능이 중요한 앱 (ex: 캐싱, 오프라인 저장)
- NoSQL 기반으로 간단하게 데이터 저장하고 싶을 때
- 관계형 데이터가 많지 않은 경우
- RxSwift와 결합하여 반응형 데이터 처리가 필요할 때
This post is licensed under CC BY 4.0 by the author.