-
안녕하세요. 그린입니다🟢
이번 포스팅에서는 Realm에 대해 학습하고 간단히 사용해보려 합니다💁🏻
사실 원래부터 하도 화제라 해보려했는데 까먹고 있다가...
근데 지금은 또 Realm이 한국 지원을 안한다고해서 의미가 있나 싶다가도..
그냥 일단 해봅니다🚀
Realm?
렘? 렐름? 리얼엠? 뭐라 읽죠 이거..?
파파고로 돌려봤는데 레음이라고 들려요 저는!
그래서 저는 렘이라고 부르고있습니다ㅎㅎ
그래서 렘이 뭐냐!
렘은 안드로이드와 iOS에 대표적으로 모바일에 최적화한 모바일 DB로 크로스 플랫폼이라고 볼 수 있습니다.
흔히 많이 사용하는 SQLite와 CoreData와 같은 역할을 해줍니다.
ORM보다 빠릅니다.
렘은 오프라인에서도 잘 작동하며 모바일에 최적화되 가볍고 메모리, 디스크 공간 및 베터리 수명에 탁월해요👍
Realm 사용하기
1. Realm 설치
우선 라이브러리를 설치해야됩니다.
https://github.com/realm/realm-swift
아래가 Swift에서의 렘 사용 라이브러리 깃헙 주소에요!
코코아팟이나 SPM등 라이브러리 관리 툴을 이용해 설치해줍니다.
코코아팟은 아래와 같이 설정
pod 'RealmSwift'
SPM은 패키지 경로 추가
https://github.com/realm/realm-swift
저는 SPM으로 했습니다!
2. Realm 구현하기
- Realm 데이터 타입 클래스 생성
import Foundation import RealmSwift class RealmData: Object { @objc dynamic var name = "" @objc dynamic var age = 0 }
이렇게 Object를 상속받아 데이터를 만들어줍니다!
기본 데이터 타입 클래스 생성은 끝났습니다ㅎㅎ
-Realm에 데이터 저장하기
private func setRealmData() { let realmData = RealmData() realmData.name = "그린" realmData.age = 100 let realm = try! Realm() try! realm.write { realm.add(realmData) } }
이렇게 RealmData 인스턴스를 만들고 그 안에 name/age 데이터의 값을 넣어줍니다.
그다음 해당 인스턴스를 Realm 객체를 만들어 그 안에 write로 add해줍니다🙋🏻
- Realm에 저장된 데이터 가져오기
private func getRealmData() -> RealmData { let realm = try! Realm() let filteredData = realm.objects(RealmData.self) .filter("age > 50") let arrData = Array(filteredData) guard let resultData = arrData.first else { return RealmData() } return resultData }
데이터 저장하는것과 유사합니다.
우선 Realm 인스턴스를 만들고 objects 메서드를 이용합니다.
해당 메서드 인자의 타입은 만들어놓은 Realm 데이터 클래스 타입으로 해줍니다.
만약 여기서 필터를 저처럼도 걸어주셔서 원하는 데이터만 받아올 수 있어요!
로컬 디바이스에 차곡차곡 저장되는 특성이 있음으로 Array 타입이에요.
그렇기에 배열의 원하는 요소의 값을 가져올 수 있도록 하거나 커스텀하게 사용할 수 있어요!
저는 최신꺼를 가져오게끔 first 인덱스를 가져왔습니다!
그리고 RealmData 타입을 반환해줍니다🚀
- Realm에 저장된 데이터 삭제하기
private func removeRealmData() { let realm = try! Realm() try! realm.write { realm.delete(realm.objects(RealmData.self)) } }
아주 쉽습니다.
저장했던것처럼 add 대신 delete해줍니다.
안에 인자로 objects 메서드를 이용해 필터를 걸어줄 수도 있습니다🙌
- SwiftUI에서 해당 구현한 메서드 적용해보기
import SwiftUI import RealmSwift struct RealmSampleView: View { @State var name: String = "이름 데이터를 가져와주세요." @State var age: String = "나이 데이터를 가져와주세요." var body: some View { Button("Set Realm Data") { setRealmData() } Button("Get Realm Data") { let realmData = getRealmData() name = realmData.name age = String(realmData.age) } Button("Remove Realm Data") { removeRealmData() } Text(name) Text(age) } }
버튼 3개를 가지고 위 세가지 기능을 동작하도록 해줍니다.
텍스트 2개는 렘 데이터에 들어있는 값들을 바인딩해줍니다👍
3. 시뮬레이터 구동해보기
위와 같이 구현됩니다!
해당 프로젝트 구현한것은 깃헙에 올려두겠습니다🙌
https://github.com/GREENOVER/playground/tree/main/realmTest
RealmStudio 사용하기
https://docs.realm.io/sync/realm-studio/
에서 툴을 다운받아 사용하면 더 편리하게 Realm에 저장된 정보들을 볼 수 있습니다
마무리
렘 드디어! 해봤습니다ㅎㅎ
아주 간단하고 코어데이터보다 더 쉽네요ㅎㅎ 빠르고💪
재밌는 경험이였습니다🧐
[참고자료]
https://docs.mongodb.com/realm-legacy/kr/docs/swift/latest.html
'Library' 카테고리의 다른 글
Alamofire (0) 2022.04.28 Lottie (0) 2022.04.12 Carthage 라이브러리 생성 및 배포 (0) 2022.02.11 SPM 라이브러리 생성 및 배포 (2) 2022.02.09 CocoaPods 라이브러리 업데이트하기 (0) 2022.02.04