Realm을 사용하는 프로젝트를 다뤄야 하는 일이 생겨서 Realm 사용법에 대해 공부할 겸 포스팅을 하겠습니다.
저는 SQLite를 백억년전쯤에 사용하고 그 뒤로 로컬 DB를 정말 오랜만에 다뤄봅니다.
그래서 Realm 사용법을 검색해보면서 처음에 계속 모델을 만드는 내용만 나오는 것에 대해 의아해했습니다.
테이블 정의는 어떻게 해??
그래서 데이터들은 어떻게 읽어온다는 것인가??
알고 보니 쿼리문으로 테이블에 데이터를 읽어오던 기존의 DB와는 전혀 다른 방식인 것을 알았습니다.
기존에 쓰던 대부분의 데이터베이스는 가져온 데이터를 바로 애플리케이션에서 사용을 할 수 없고, 애플리케이션에서 사용이 가능하도록 가공을 하는 과정이 필요했습니다. 이 가공을 하는 과정에서 잘못하면 코드가 굉장히 복잡해질 수도 있는 문제가 있었지요
램은 객체 형태로 데이터를 읽어오고 객체 형태로써 바로 DB에 저장을 가능하게 함으로써 위와 같은 문제점을 해결한 솔루션이었습니다!!!!
그동안의 DB경험에 대한 고정관념으로 램 조사 시간을 잡아먹었던 것이었습니다.
'왜 모델에 대해 먼저 설명하지 이상하다' 이렇게 접근했던 것이죠
'그래서 select는 어떻게 날리는 건데'라며 볼 것이 아니라 왜 모델을 먼저 설명하고 있는지 봤었어야 하는데 말이죠
옛날 개발자가 된 기분이 들락 말락 합니다.
1. 설치법
코코아팟으로 설치하는 법입니다.
podfile에 아래와 같이 추가합니다.
pod ‘RealmSwift’
자세한 설치방법은 공식 Realm페이지를 참고하세요
https://realm.io/kr/docs/swift/latest/#getting-started
2. 코드 작성, 데이터 저장
렘을 적용할 프로젝트에 포함시켰다면
아래의 코드를 작성해보세요
오류 없이 다 작성하셨으면 실행까지 해보세요
import RealmSwift // 렘 라이브러리 임포트
class TestModel: Object { // TestModel 모델을 작성합니다.
@objc dynamic var name = "" //속성 값으로는 name과number가 있습니다.
@objc dynamic var number = 0 //@objc 키워드를 꼭 붙여야 합니다.
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm() //default 렘 객체를 생성합니다.
let person = TestModel() //모델을 생성하고 저장하고 싶은 value를 set 합니다.
person.name = "Kim"
person.number = 7
try! realm.write { //렘(DB)에 저장합니다.
realm.add(person)
}
}
}
3. Realm Studio 설치
위처럼 작성하며 앱을 실행시켜 본 뒤에
잘 저장됐는지 확인을 해보겠습니다.
우선 Realm Studio가 필요합니다.
https://realm.io/kr/products/realm-studio/
위 url로 들어가시면 Realm Studio를 받으 실 수 있습니다.
Realm Studio를 PC에 설치합니다.
4. 데이터 보기
Realm Studio를 설치한 후 앱이 설치되어있는 경로로 찾아갑니다
Document폴더에 렘 파일이 생성되기 때문에 해당 시뮬레이터 안에 앱 폴더 안에 도큐먼트 폴더로 들어갑니다.
팁은 아래와 같은 코드를 사용하여 폴더 주소를 알아내는 겁니다.
let documentsDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
print(documentsDirectory)
(실 기기의 디비 파일을 열고 싶으시면 아래 주소를 참고하세요
https://stackoverflow.com/questions/28465706/how-to-find-my-realm-file)
해당 폴더로 들어가면 아래와 같이 렘 파일이 보입니다.
렘파일 위에서 오른쪽 버튼 > 다음으로 열기 > Realm Studio를 엽니다.
Realm Studio를 열면 아래와 같이 우리가 넣은 값들이 보입니다!
데이터 읽어오기
let realm = try! Realm()
let models= realm.objects(TestModel.self)
print(models)
index auto increse 설정하는법
class TestModel: Object {
@objc dynamic var index = 0
override static func primaryKey() -> String? {
return "index"
}
func incrementIndex() -> Int {
let realm = try! Realm()
return (realm.objects(Video.self).max(ofProperty: "index") as Int? ?? 0) + 1
}
}
'IT > iOs' 카테고리의 다른 글
iOS13 touchid issue (0) | 2019.10.22 |
---|---|
맥 카탈리나 코코아팟 오류 (0) | 2019.10.19 |
Multiple commands produce Error 해결법 (1) | 2019.10.11 |
iOS13 Modal ViewController 변경사항 (0) | 2019.10.02 |
iOS13(xcode11) NSData 변경사항 (0) | 2019.10.01 |