프로젝트 수준의 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중 가장 큰 값을 얻을 때 사용한다.