作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我爱Realm我爱Bond .它们都使应用程序创建成为一种乐趣。所以我想知道连接 Realm 和 Bond 的最佳方式是什么?
在Realm中我们可以存储基本类型,如Int
、String
,例如但在 Bond 中,我们使用 Dynamic
和 Bond
。我发现连接 Realm 和 Bond 的唯一方法如下:
class TestObject: RLMObject {
dynamic var rlmTitle: String = ""
dynamic var rlmSubtitle: String = ""
var title: Dynamic<String>
var subtitle: Dynamic<String>
private let titleBond: Bond<String>!
private let subtitleBond: Bond<String>!
init(title: String, subtitle: String) {
self.title = Dynamic<String>(title)
self.subtitle = Dynamic<String>(subtitle)
super.init()
self.titleBond = Bond<String>() { [unowned self] title in self.rlmTitle = title }
self.subtitleBond = Bond<String>() { [unowned self] subtitle in self.rlmSubtitle = subtitle }
self.title ->> titleBond
self.subtitle ->> subtitleBond
}
}
但它确实缺乏简洁和优雅,并且会产生大量的锅炉代码。有什么办法可以做得更好吗?
最佳答案
有了支持 KVO 和 Bond 4 的 Realm,您可以扩展 Realm 对象以提供 Observable 变体。它有一些样板,但很干净,没有黑客攻击。
class Dog: Object {
dynamic var name = ""
dynamic var birthdate = NSDate(timeIntervalSince1970: 1)
}
extension Dog {
class ObservableDog {
let name: Observable<String>
let birthdate: Observable<NSDate>
init(dog: Dog) {
name = Observable(object: dog, keyPath: "name")
birthdate = Observable(object: dog, keyPath: "birthdate")
}
}
func observableVariant() -> Dog.ObservableDog {
return ObservableDog(dog: self)
}
}
你可以做到:
let myDog = Dog().observableVariant()
myDog.name.observe { newName in
print(newName)
}
myDog.name.bindTo(nameLabel.bnd_text)
realm.write {
myDog.name.value = "Jim"
}
关于ios - 连接 Realm 和 SwiftBond 的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155556/
我正在尝试将 SwiftBond 框架导入 Xcode:https://github.com/SwiftBond/Bond 我从未导入过第 3 方框架(Parse 除外,但这很容易做到),而且我很迷茫
我爱Realm我爱Bond .它们都使应用程序创建成为一种乐趣。所以我想知道连接 Realm 和 Bond 的最佳方式是什么? 在Realm中我们可以存储基本类型,如Int、String,例如但在 B
我正在使用 SwiftBond绑定(bind) TableView 。我想在我的 tableview 中有索引列表,但我不知道如何实现它。 我想使用更多的 tableview 数据源方法,但我不知道正
我是一名优秀的程序员,十分优秀!