Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Swift Package Manager
- development language
- UIPresentationController
- base64 변환
- url 관찰
- ViewBuilder
- oberve url
- swift #swift keychain #keychain 사용법
- 스크롤 탭
- url 추적
- List
- swift
- 상단 탭바
- detect url
- DataBinding
- Tuist
- 기존 앱
- SwiftUI
- ios
- UIViewControllerTransitioningDelegate
- pod install
- transformation.map
- scrolling tab
- DevelopmentRegion
- notifychanged
- Android
- convert base64
- GeometryReader
- 개발자 면접
- Side Menu
Archives
- Today
- Total
버그 잡이
Room에서 List 사용하기 #Kotlin #TypeConverter #Android 본문
Room에서 다음과 같이 선언하면 그냥 쓸 수 있을 줄 알았다.
@ColumnInfo(name = "word_list")
var wordList: List<Word> ?= null
하지만 다음과 같이 선언하고 build를 시작하면 error가 뜬다.
에러내용은 "typerConverter를 사용할 것을 고려해봐라" 이다.
그래서 TypeConverter에 관해 찾아보니 다음 글을 찾을 수 있었다.
방법은 아래와 같다.
1. Converter 클래스를 만든다.
- 해당 data 클래스와 같은 파일에 만들던 다른 곳에 만들던 상관없다.
- 아래 클래스는 Gson을 list를 json으로 , json을 list로 바꿔주는 converter이다. (*Gson 라이브러리를 추가해야한다.)
- Room에 저장될때는 json으로 바꿔주고 불러올때는 list로 바꿔주는 것 같다.
class Converters {
@TypeConverter
fun listToJson(value: List<Word>?) = Gson().toJson(value)
@TypeConverter
fun jsonToList(value: String) = Gson().fromJson(value, Array<Word>::class.java).toList()
}
2. DB 클래스에 converter 추가
- @TypeConverters(Converters::class) 이거 한줄 추가해주면 된다.
@Database(entities = arrayOf(Alarm::class), version = 4)
@TypeConverters(Converters::class)
abstract class AlarmDB : RoomDatabase(){
}
+
나는 원래 arraylist형태를 저장하고 싶었는데 이것은 지원해주지 않는 것 같다. room에 저장할 경우에는 list 또는 array 형태를 이용하자.
반응형
'안드로이드' 카테고리의 다른 글
[Kotlin] 안드로이드 recyclerView 클릭 리스너 달기 #onItemclickListener (2) | 2020.04.28 |
---|---|
Kotlin AlarmManager로 알람 앱 만들기 (0) | 2020.04.24 |
EditText에서 한줄로 입력하기 #singleLine을 대체하는 inputType (0) | 2020.04.22 |
Kotlin + Retrofit + Moshi 중첩된 Json 풀기 #nested json (0) | 2020.04.16 |
(실전 적용)ViewModel + LiveData로 화면 전환시 data 초기화 문제 해결하기 #configuration change (0) | 2020.04.10 |
Comments