iOS

[iOS] RealmSwift 라이브러리 사용해보기

빨간체리반지 2020. 10. 6. 13:52

Realm?

오픈소스로 제공되는 모바일 데이터베이스 관리 라이브러리.

클래스 단위로 Table이 생성되고, 객체 단위로 row가 구성된다.

 

 

RealmSwift

우선 pod 'RealmSwift', '5.3.3' 으로 Pods에 프레임워크 생성해주고,

import RealmSwift 해서 쓰면 끝이다.

 

 

우선 Realm 상에 저장할 객체 클래스를 생성한다.

여기서 주의할 점은 Realm에서 column 형태로 사용하려면, @objc dynamic 을 반드시 붙여줘야 한다

class Cat: Object {

    @objc dynamic var name: String?

    @objc dynamic var color: String?

    @objc dynamic var gender: String?

}

 

 

그리고 Realm 객체를 이용해 객체 단위로 CRUD를 할 수 있다.

// Realm 객체 선언

let realm = try! Realm()

 

// 추가 (예시)

var myCat = Cat()

myCat.name = "Jane"

myCat.color = "Gray"

myCat.gender = "Female"

 

try! realm.write {

    realm.add(myCat)

}

 

// 조회 (예시)

let cats = realm.objects(Cat.self)

    .filter("color = 'Gray'")

    .sorted(byKeyPath: "name", ascending: true)

for cat in cats {

    print(cat.name!)

}

 

// 갱신 (예시)

if let cat = realm.objects(Cat.self).first {

    try! realm.write {

        cat.name = "hi"

    }

}

 

// 삭제 (예시)

if let firstItem = realm.objects(Cat.self)

    .sorted(byKeyPath: "name", ascending: true)

    .first {

    try! realm.write {

        realm.delete(firstItem)

    }

}

 

 

(추가 - Realm Studio)

print(Realm.Configuration.defaultConfiguration.fileURL!)

하면 해당 프로젝트의 realm 파일 위치가 나오는데, 이 위치로 터미널에

open {realm 파일 위치} 라고 입력하면, Realm Studio를 이용해 데이터베이스를 테이블구조로 확인할 수 있다.

 

오류사항

 

 

오류 1) import RealmSwift를 하면 could not build objective-c module 'RealmSwift' 라는 문구가 뜨는 경우

Xcode Product > Schemes > New Scheme... > RealmSwift 선택 후 확인 > Build the RealmSwift target

이후 다시 시도해보면 된다.

 

오류 2) invalid top array 라는 문구와 함께 .realm 파일이 열리지 않는 경우

다른 버전의 Realm Studio로 해보자.

나의 경우 RealmSwift 5.3.3 버전과 Realm Studio 3.11.0 버전을 사용했더니 해결됐다.

 

 


(Realm 사이트 - Swift)

 

Realm: 리액티브 모바일 애플리케이션을 손쉽고 빠르게 만드세요

Realm Swift is the first database built for mobile. An alternative to SQLite and Core Data that's fast, easy to use, and open source.

realm.io

 

(CocoaPods - RealmSwift)

 

RealmSwift

Realm is a modern data framework & database for iOS, macOS, tvOS & watchOS.

cocoapods.org

 

(GitHub - Realm Studio 3.11.0 다운로드)

 

Release 3.11.0 · realm/realm-studio

Changes since v3.10.0 Enhancements Added support for reading / writing Realm files using Realm file format v10 (used by realm-js v6, realm-java v7, realm-cocoa v5 and realm-dotnet v5). When openin...

github.com

 

(참고 영상)