RX 块的领域通知
Realm notification to RX block
我想隐藏我的 Realm 实现,而不是处理 RLMNotificationBlock
我想使用 RXSwift。下面是我的方法现在的样子(RLMNotificationBlock
是一个接受字符串和 RLMRealm
的块):
func addNotificationBlock(block: RLMNotificationBlock) -> RLMNotificationToken? {
let rlmObject = ...
return rlmObject.addNotificationBlock(block)
}
但我想切换到更具反应性的观察者模式方式。我查看了 rx_clickedButtonAtIndex
的 RxSwift 文档和源代码,但我不知道应该如何将所有这些东西放在一起。我想我最后的代码看起来像:
public var rx_realmContentChanged: ControlEvent<Int> {
let controlEvent = ControlEvent()
// My code go here
return controlEvent
}
我是 RXSwift 的新手,只知道基础知识。任何帮助将不胜感激。
如果我没理解错的话,你只是想 return Observable<RLMNotificationToken>
在这种情况下你只需要做这样的事情
func addNotificationBlock(block: RLMNotificationBlock) -> Observable<RLMNotificationToken> {
return create { observer -> Disposable in
let rlmObject = ...
let token = rlmObject.addNotificationBlock(block)
// Some condition
observer.onNext(token)
// Some other condition
observer.onError(NSError(domain: "My domain", code: -1, userInfo: nil))
return AnonymousDisposable {
// Dispose resources here
}
// If you have nothing to dipose return `NopDisposable.instance`
}
}
为了使用它绑定到按钮 rx_tap 或其他使用 flatMap
运算符
GitHub 上有可用的 Rx 领域扩展,您可以使用:https://github.com/RxSwiftCommunity/RxRealm
它允许您从单个 Realm 对象或 Realm Collection 中获取 Observable。这是自述文件中的示例:
let realm = try! Realm()
let laps = realm.objects(Lap.self))
Observable.changesetFrom(laps)
.subscribe(onNext: { results, changes in
if let changes = changes {
// it's an update
print(results)
print("deleted: \(changes.deleted) inserted: \(changes.inserted) updated: \(changes.updated)")
} else {
// it's the initial data
print(results)
}
})
还有一个额外的库,专门用于绑定 table 和名为 RxRealmDataSources 的集合视图
我想隐藏我的 Realm 实现,而不是处理 RLMNotificationBlock
我想使用 RXSwift。下面是我的方法现在的样子(RLMNotificationBlock
是一个接受字符串和 RLMRealm
的块):
func addNotificationBlock(block: RLMNotificationBlock) -> RLMNotificationToken? {
let rlmObject = ...
return rlmObject.addNotificationBlock(block)
}
但我想切换到更具反应性的观察者模式方式。我查看了 rx_clickedButtonAtIndex
的 RxSwift 文档和源代码,但我不知道应该如何将所有这些东西放在一起。我想我最后的代码看起来像:
public var rx_realmContentChanged: ControlEvent<Int> {
let controlEvent = ControlEvent()
// My code go here
return controlEvent
}
我是 RXSwift 的新手,只知道基础知识。任何帮助将不胜感激。
如果我没理解错的话,你只是想 return Observable<RLMNotificationToken>
在这种情况下你只需要做这样的事情
func addNotificationBlock(block: RLMNotificationBlock) -> Observable<RLMNotificationToken> {
return create { observer -> Disposable in
let rlmObject = ...
let token = rlmObject.addNotificationBlock(block)
// Some condition
observer.onNext(token)
// Some other condition
observer.onError(NSError(domain: "My domain", code: -1, userInfo: nil))
return AnonymousDisposable {
// Dispose resources here
}
// If you have nothing to dipose return `NopDisposable.instance`
}
}
为了使用它绑定到按钮 rx_tap 或其他使用 flatMap
运算符
GitHub 上有可用的 Rx 领域扩展,您可以使用:https://github.com/RxSwiftCommunity/RxRealm
它允许您从单个 Realm 对象或 Realm Collection 中获取 Observable。这是自述文件中的示例:
let realm = try! Realm()
let laps = realm.objects(Lap.self))
Observable.changesetFrom(laps)
.subscribe(onNext: { results, changes in
if let changes = changes {
// it's an update
print(results)
print("deleted: \(changes.deleted) inserted: \(changes.inserted) updated: \(changes.updated)")
} else {
// it's the initial data
print(results)
}
})
还有一个额外的库,专门用于绑定 table 和名为 RxRealmDataSources 的集合视图