RxSwiftCommunity / RxRealm

RxSwift extension for RealmSwift's types
MIT License
1.15k stars 263 forks source link

Add keyPaths arg to changeset to observe object (#172) #192

Closed mtgto closed 8 months ago

mtgto commented 1 year ago

172 Add keyPaths argument to observe only specified prioerties of realm collection.

It requres RealmSwift v10.14.0+ (RxRealm v5.0.5 requires RealmSwift v10.21.x) https://www.mongodb.com/docs/realm/sdk/swift/react-to-changes/#register-a-key-path-change-listener https://github.com/realm/realm-swift/releases/tag/v10.14.0

Example:

class Dog: Object {
  @Persisted var name = ""
  @Persisted var breed: String?
  @Persisted var dateOfBirth = Date()
}

let realm = try! Realm()
let dogs = realm.objects(Dog.self)

// Observe name is changed
Observable.changeset(from: dogs, keyPaths: ["name"])
  .subscribe(onNext: { results, changes in
    // ...
})

// You can use PartialKeyPaths
Observable.changeset(from: dogs, keyPaths: [\Dog.breed])
  .subscribe(onNext: { results, changes in
    // ...
})
rynecheow commented 8 months ago

Closing due to staleness, please raise a new pull request if needed @mtgto