RealmFlow
RealmFlow 让 Realm 操作变得更简单。
- 将 Realm 操作定义为
RealmFlow
。 - 按照之前的操作顺序编写操作,使用方法链。
- 使用
realm.run(flow:)
运行 Realm 操作。
如果需要,RealmFlow 会自动调用 realm.beginTransaction()
。所以您不需要考虑事务。
示例
import RealmSwift
import RealmFlow
class Dog : Object {
@objc dynamic var name: String = ""
}
class Cat : Object {
@objc dynamic var name: String = ""
}
// ...
func do_operations() {
// define data
let pochi = Dog()
pochi.name = "Poti"
let tama = Cat()
tama.name = "Tama"
let hachi = Dog()
hachi.name = "Hachi"
let taro = Dog()
taro.name = "Taro"
let jiro = Dog()
jiro.name = "Jiro"
// write operations (not run yet)
let flow = Realm.Flow
.add(pochi) // add pochi
.add(tama)
.add(hachi)
.objects(Dog.self) // query type Dog
.subscribe { results in // process query results
print("first subscribe")
for dog in results {
print("dog.name: \(dog.name)")
}
}
.objects(Cat.self) // query type Cat
.add(taro) // add taro
.subscribe { results in // process query type Cat results
print("second subscribe")
for cat in results {
print("cat.name: \(cat.name)")
}
}
.delete(pochi) // delete pochi
.add(jiro)
.objects(Dog.self) // query type Dog again
.subscribe { results in
print("third subscribe")
for dog in results {
print("dog.name: \(dog.name)")
}
}
// run operations
let realm = try! Realm()
let _ = try? realm.run(flow: flow)
}
安装
Carthage
github "JunSuzukiJapan/RealmFlow"
CocoaPods
pod 'RealmFlow', '~> 0.3'
CRUD 示例代码
创建
let hachi = Dog()
hachi.name = "Hachi"
let flow = Realm.Flow.add(hachi)
let realm = try! Realm()
let _ = try? realm.run(flow: flow)
读取
let flow = Realm.Flow.objects(Dog.self)
.subscribe { results in
let name = results.first?.name ?? "No dog"
print("dog name: \(name)")
}
let realm = try! Realm()
let _ = try? realm.run(flow: flow)
更新
let flow = Realm.Flow.objects(Dog.self)
.subscribe_with_write_permission { (realm, results) in
results.first?.name = "Pochi"
}
let realm = try! Realm()
let _ = try? realm.run(flow: flow)
删除
let flow = Realm.Flow.objects(Dog.self)
.subscribe_with_write_permission { (realm, results) in
if let dog = results.first {
realm.delete(dog)
}
}
let realm = try! Realm()
let _ = try? realm.run(flow: flow)
信用
RealmFlow 得益于 RealmIO 的灵感。