프로젝트 수준의 gradle의 dependencies에 다음과 같이 추가
dependencies {
classpath "io.realm:realm-gradle-plugin:5.2.0"
}
모듈 수준의 gradle 상단에 다음 코드 추가
apply plugin: "kotlin-kapt" //이 라인이 아래로 내려가면 apply plugin: "kotlin-kapt"
//이따위 에러가 발생할 수 있음
apply plugin: "realm-android"
Todo 모델 클래스 작성
//코틀린에서는 Realm에서 사용하는 클래스에 open 키워드를 추가한다.
//@PrimaryKey는 고유하며, Realm에서 제공하는 주석이다.
open class Todo(
@PrimaryKey var id: Long = 0,
var title: String = "",
var date: Long = 0
) : RealmObject() {
}
생존코딩 399, 400페이지 참조
//새 객체 생성
var realm = Realm.getDefaultInstance()
private fun insertTodo() {
realm.beginTransaction()
val newItem = realm.createObject<Todo>(nextId())
newItem.title = editText.text.toString()
newItem.date = calendar.timeInMillis
realm.commitTransaction()
alert("내용이 추가되었습니다.") {
yesButton { finish() }
}.show()
}
//Realm에서는 key를 자동증가 해주는 기능이 없기에 수동으로 nextId를 가져와야함
private fun nextId(): Int {
val maxId = realm.where<Todo>().max("id")
if(maxId != null){
return maxId.toInt() + 1
}
return 0
}
//모든 값을 얻으려면 where<Todo>() 메서드를 이용한다. //이 메서드는 RealmQuery 객체를 반환하고 다음에 이어지는 조건을 수행한다. //위의 코드에서는 max()를 조건으로 달았고, max()는 현재 id중 가장 큰 값을 얻을 때 사용한다.