[swift] Swift Realm에서의 쿼리 작성 방법

Realm은 데이터베이스 작업을 간편하게 할 수 있는 모바일 데이터베이스입니다. Swift에서 Realm을 사용할 때, 우리는 데이터베이스에 대한 쿼리를 작성하여 원하는 데이터를 조회할 수 있습니다. 이번 블로그 포스트에서는 Swift Realm에서의 쿼리 작성 방법에 대해 알아보겠습니다.

Realm 객체 모델 정의하기

먼저, Realm에서 데이터를 저장하기 위해 객체 모델을 정의해야 합니다. 예를 들어, 사용자 정보를 저장하기 위한 User 객체를 정의해보겠습니다.

import RealmSwift

class User: Object {
    @objc dynamic var name = ""
    @objc dynamic var age = 0
    @objc dynamic var email = ""
}

위의 코드에서 User 클래스는 Realm의 Object 클래스를 상속받아야 합니다. 속성들은 @objc dynamic 으로 표시되며, 이는 Realm이 이 속성들을 관리하도록 만듭니다.

쿼리 작성하기

이제 데이터베이스에 저장된 User 객체들 중에서 특정한 조건을 가진 객체들을 조회해보겠습니다.

1. 모든 객체 조회하기

let realm = try! Realm()
let users = realm.objects(User.self)

위의 코드는 데이터베이스에 저장된 모든 User 객체를 조회합니다. realm.objects(User.self)를 호출하면 User 객체들로 이루어진 Results 컬렉션이 반환됩니다.

2. 조건에 맞는 객체 조회하기

let realm = try! Realm()

let adultUsers = realm.objects(User.self).filter("age >= 18")

위의 코드는 데이터베이스에 저장된 User 객체 중에서 age 속성이 18 이상인 객체들을 조회합니다. filter 메서드를 사용하여 조건을 지정할 수 있습니다. 이때, 조건문은 문자열 형태로 작성되며, 필드 이름과 조건 연산자를 사용하여 작성합니다.

3. 정렬하여 객체 조회하기

let realm = try! Realm()

let sortedUsers = realm.objects(User.self).sorted(byKeyPath: "name", ascending: true)

위의 코드는 데이터베이스에 저장된 User 객체들을 name 필드를 기준으로 오름차순으로 정렬하여 조회합니다. sorted 메서드를 사용하여 정렬할 수 있으며, byKeyPath 매개변수를 통해 정렬 기준 필드를 지정할 수 있습니다. 또한, ascending 매개변수를 통해 오름차순(true) 또는 내림차순(false)으로 정렬할 수 있습니다.

정리

Swift에서 Realm을 사용하여 데이터베이스 쿼리를 작성하는 방법에 대해 알아보았습니다. Realm을 사용하면 간편하고 효율적으로 데이터를 조회할 수 있습니다. 이를 활용하여 앱 개발을 더욱 편리하게 할 수 있습니다.

더 많은 Realm 쿼리 작성 방법은 Realm 문서를 참고하시기 바랍니다.