Skip to content

[bug] change gets swollen when using synchronous first element #74

@icanzilb

Description

@icanzilb

As described here:
realm/realm-swift#4761 (comment)

Demo code:

class Test: Object {
    dynamic var name = ""
    override var description: String {
        return "[name => '\(name)']"
    }
}

class ViewController: UIViewController {

    private let bag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        test()
    }

    var token: NotificationToken?

    func test() {
        let realm = try! Realm()
        let obj = Test()

        try! realm.write {
            realm.deleteAll()
            realm.add(obj)
        }

        let tests = realm.objects(Test.self)

        DispatchQueue.global(qos: .background).async {
            let realm = try! Realm()
            let obj = realm.objects(Test.self).first!

            try! realm.write {
                obj.name = "Test0"
            }
        }

        Observable.array(from: tests)
            .subscribe(onNext: { value in
                print("rx next: \(flatten(value))")
            })
            .addDisposableTo(bag)

        token = tests.addNotificationBlock { changes in
            switch changes {
            case .initial(let tests):
                print("realm initial: \(flatten(tests))")
            case .update(let tests, _, _, _):
                print("realm changed: \(flatten(tests))")
            default: break
            }
        }

    }

}

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions