[swift] Swift Realm에 대한 튜토리얼 및 예제

Realm은 iOS와 macOS 애플리케이션을 위한 데이터베이스입니다. Swift로 개발을 진행하고 있다면, 이 튜토리얼은 Swift Realm의 기본적인 개념과 사용법을 설명하며, 몇 가지 예제를 제공합니다.

목차

Realm 설치

Realm을 사용하기 위해서는 프로젝트에 Realm CocoaPods를 추가해야 합니다. Podfile에서 다음을 추가합니다:

use_frameworks!

target 'YourApp' do
    pod 'RealmSwift'
end

그리고 터미널에서 다음 명령어를 실행하여 Realm을 설치합니다:

$ pod install

Realm 초기화

Realm을 사용하기 전에 초기화 과정이 필요합니다. 일반적으로 앱 델리게이트 파일(AppDelegate.swift)에서 설정을 해줍니다. 다음은 Realm을 초기화하는 예제입니다:

import UIKit
import RealmSwift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var realm: Realm!

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Realm 초기화
        do {
            // Realm 파일의 기본 경로 가져오기
            let realmURL = Realm.Configuration.defaultConfiguration.fileURL
            // 개발 용도로 기존 Realm 파일 삭제
            try FileManager.default.removeItem(at: realmURL!)
            
            // Realm 초기화
            realm = try Realm()
            
            // Realm 파일 경로 출력
            print(realmURL!)
        } catch {
            print("Realm 초기화 실패: \(error)")
        }
        
        // 나머지 앱 초기화 작업
        return true
    }
}

위 코드에서 주목해야 할 점은 realm = try Realm() 부분입니다. 이 부분에서 Realm을 초기화하고, 기존 Realm 파일을 삭제하고 시작할 수도 있습니다.

Object 모델 정의

Realm에서는 데이터를 Object로 모델링합니다. Realm을 사용하기 위해 데이터 객체 클래스를 정의해야 합니다. 예를 들어, 사용자 정보를 저장하는 User 클래스를 다음과 같이 정의할 수 있습니다:

import Foundation
import RealmSwift

class User: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var name: String = ""
    @objc dynamic var age: Int = 0
}

위 코드에서 User 클래스는 Object를 상속받고 있으며, 사용자 정보를 저장하기 위한 id, name, age 프로퍼티가 있습니다.

데이터 추가하기

Realm에 데이터를 추가하는 것은 간단합니다. 다음은 User 객체를 생성하고 Realm에 저장하는 예제입니다:

func addUser() {
    let user = User()
    user.id = 1
    user.name = "John"
    user.age = 25
    
    try! realm.write {
        realm.add(user)
    }
}

위 코드에서는 User 객체를 생성하고 필요한 프로퍼티에 값을 설정한 후, realm.write 블록 안에서 realm.add 메서드를 사용하여 데이터를 추가합니다.

데이터 조회하기

Realm에서 데이터를 조회하는 것도 매우 간단합니다. 다음은 모든 사용자 정보를 조회하는 예제입니다:

func getUsers() -> Results<User> {
    return realm.objects(User.self)
}

위 예제에서는 objects 메서드를 사용하여 User 객체의 모든 인스턴스를 조회합니다. Results<User> 객체를 반환하며, 이 객체는 User 객체의 컬렉션입니다.

데이터 수정하기

Realm에서 데이터를 수정하는 것도 간단합니다. 다음은 사용자의 이름을 변경하는 예제입니다:

func updateUser() {
    let user = realm.objects(User.self).filter("id == 1").first
    try! realm.write {
        user?.name = "David"
    }
}

위 예제에서는 filter 메서드를 사용하여 id가 1인 사용자를 조회하고, write 블록 안에서 사용자의 이름을 변경합니다.

데이터 삭제하기

Realm에서 데이터를 삭제하는 것도 간단합니다. 다음은 사용자를 삭제하는 예제입니다:

func deleteUser() {
    let user = realm.objects(User.self).filter("id == 1").first
    try! realm.write {
        realm.delete(user)
    }
}

위 예제에서도 filter 메서드를 사용하여 id가 1인 사용자를 조회하고, write 블록 안에서 delete 메서드로 사용자를 삭제합니다.

Swift Realm에 대한 튜토리얼과 예제를 제공했습니다. Realm은 Swift로 앱을 개발할 때 강력한 데이터베이스 솔루션으로써 많은 기능과 유연성을 제공합니다. 더 자세한 내용은 Realm 공식 문서를 참조하시기 바랍니다.