일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observer Pattern
- 추상 팩토리
- 디자인패턴 #
- 빌터패턴
- 팩토리 메소드
- factory method
- PrototypePattern
- Kotlin
- r
- designPattern
- Singleton
- El
- 추상팩토리패턴
- 싱글톤
- 옵저버 패턴
- Abstract Factory
- a
- 프로토타입 패턴
- ㅋㅁ
- builderPattern
- 함수형프로그래밍
- Design Pattern
- Functional Programming
- F
- ㅓ
- 코틀린
- 디자인패턴
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Realm kotlin Read 본문
Find Object by Primary Key
특정 primary 키 값을 가진 객체를 찾으려면 Realm을 열고 realm.query()를 사용하여 원하는 primary 키 값에 대한 기본 키 필드를 쿼리합니다. 객체 유형을 query()에 전달된 유형 매개변수로 지정하십시오
// Search equality on the primary key field name
val frogs: Frog? = realm.query<Frog>("_id == $0", PRIMARY_KEY_VALUE).first().find()
* find()는 호출된 스레드에서 동기 쿼리를 실행합니다. 따라서 UI 스레드 또는 UI 스레드를 지연시킬 수 있는 로직에서 find()를 사용하지 마십시오. 시간에 민감한 환경에서는 asFlow()를 사용한다
Find Objects of a Type - Kotlin SDK
모든 객체를 찾으려면 Realm을 열고 유형 매개변수로 유형을 realm.query()에 전달
// fetch all objects of a type as a flow, asynchronously
val frogsFlow: Flow<ResultsChange<Frog>> = realm.query<Frog>().asFlow()
val asyncCall: Deferred<Unit> = async {
frogsFlow.collect { results ->
when (results) {
// print out initial results
is InitialResults<Frog> -> {
for (frog in results.list) {
Log.v("Frog: $frog")
}
} else -> {
// do nothing on changes
}
}
}
}
// fetch all objects of a type as a results collection, synchronously
val frogs: RealmResults<Frog> = realm.query<Frog>().find()
for(frog in frogs) {
Log.v("Frog: $frog")
}
Filter Data - Kotlin SDK
결과를 필터링하여 realm.query()를 사용하여 Realm Objects의 조건에 맞는 일부를 검색합니다.
realm.query()의 인수에서 Realm 쿼리 언어를 사용하여 필터링을 수행합니다.
Realm 쿼리 언어는 영역에서 객체를 검색하는 데 사용할 수 있는 문자열 기반 쿼리 언어입니다.
쿼리 언어
https://www.mongodb.com/docs/realm/realm-query-language/#std-label-rql
// Find frogs where name is 'Michigan J. Frog'
val michiganFrogs: RealmResults<Frog> =
realm.query<Frog>("name = 'Michigan J. Frog'").find()
// Find frogs where age > 3 AND species is 'Green'
val oldGreenFrogs: RealmResults<Frog> =
realm.query<Frog>("age > 3 AND species = 'green'").find()
Sort Queries - Kotlin SDK
결과를 정렬하려면
SORT - realm.query()에 전달된 쿼리에서 정렬을 지정
DISTINCT - 결과를 필드의 고유한 값으로 제한
LIMIT - 결과 수를 제한
SDK는 RealmQuery에서 편리한 메소드를 제공하므로 키워드를 수동으로 작성할 필요가 없습니다
realmQuery.sort()
realmQuery.distinct()
realmQuery.limit()
RQL 및 메서드 형식 모두에서 동일한 쿼리에 사용되는 경우,
SORT, DISTINCT 및 LIMIT는 쿼리에 추가된 순서대로 실행됩니다. 이는 query에서 반환된 결과에 영향을 줄 수 있습니다.
RQL 형식
val somewhatLessConvenientlyOrganizedFrogs: Flow<ResultsChange<Frog>> =
realm.query<Frog>("name = 'George Washington' SORT(age DESC) DISTINCT(owner) LIMIT(5)")
.asFlow()
Method 형식
val convenientlyOrganizedFrogs: Flow<ResultsChange<Frog>> =
realm.query<Frog>("name = 'George Washington'")
.sort("age", Sort.DESCENDING)
.distinct("owner")
.limit(5)
.asFlow()
Iteration - Kotlin SDK
Flows를 사용하여 결과를 반복할 수 있습니다
결과를 Flow로 변환하려면 realmQuery.asFlow()를 호출, 그런 다음 flow.collect() 사용하여 결과를 반복한다.
// fetch frogs from the realm as Flowables
val frogsFlow: Flow<ResultsChange<Frog>> = realm.query<Frog>().asFlow()
// iterate through the flow with collect, printing each item
val frogsObserver: Deferred<Unit> = async {
frogsFlow.collect { results ->
when (results) {
// print out initial results
is InitialResults<Frog> -> {
for (frog in results.list) {
Log.v("Frog: $frog")
}
}
else -> {
// do nothing on changes
}
}
}
}
'kotlin Multiplatform > realm-kotlin-kmm' 카테고리의 다른 글
Realm Kotlin Create (0) | 2022.07.25 |
---|---|
Realm Transaction (0) | 2022.07.25 |
Realm kotlin scheme (0) | 2022.07.25 |
Realm kotlin schem(Data Type) (0) | 2022.07.25 |
Frozen Architecture - Kotlin SDK (0) | 2022.07.25 |