Post

Realm 정리

Realm 정리

Realm빠르고 가벼운 모바일 데이터베이스로, SQLite보다 빠른 성능을 제공하며, 사용법이 간단함.

iOS에서 오프라인 데이터 저장이나 캐싱 처리에 많이 사용됨.

1. Realm의 특징

  • 빠른 데이터 처리 → Core Data보다 읽기/쓰기 속도가 빠름
  • 간편한 APIwrite {} 블록을 사용해 저장/삭제 가능
  • 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.