RealmSugar 1.1.0

RealmSugar 1.1.0

测试已测试
语言语言 SwiftSwift
许可协议 Apache 2
发布时间最新发布2017年11月
SwiftSwift 版本4.0
SPM支持 SPM

Niels Koole 维护。



  • 作者:
  • Niels Koole

RealmSugar

RealmSugar 是用来去除在 realm 实例上获取通知时不需要的代码的语法糖。

摘要

RealmSugar 只是一个 15 行代码的扩展,使得获取通知更易读。您需要更少的样板代码即可获取每个 realm 实例的更新。

特性

  • [x] 以更简洁的方式获取 realm 对象通知,减少样板代码。
  • [x] 寻求改进以提高类型安全性的方式。
  • [x] 在列表、结果和链接对象上获取通知的语法糖。

要求

  • iOS 9.0+
  • Xcode 8.0+
  • Swift 3.0

用法

对象通知

接收所有更改属性的通知。

let instance = Employee()

let token = instance.notify { [weak self] (employee) in
    
    // Update label
    self?.textLabel.text = employee.name
}

在特定属性更新时接收通知。

let instance = Employee()
let token = instance.notify(for: #keyPath(Employee.name)) { [weak self] (employee) in
    
    // Update label
    self?.textLabel.text = employee.name
}

let token = instance.notify(for: [#keyPath(Employee.name)]) { [weak self] (employee) in
    
    // Update label
    self?.textLabel.text = employee.name
}

在初始化和更新时接收通知。

let instance = Employee()

let token = instance.fireAndNotify(for: #keyPath(Employee.name)) { [weak self] (employee) in
    
    // Update label
    self?.textLabel.text = employee.name
}

let token = instance.fireAndNotify(for: [#keyPath(Employee.name)]) { [weak self] (employee) in
    
    // Update label
    self?.textLabel.text = employee.name
}

集合通知

接收所有更改对象的通知。

let realm = try! Realm()
let token = realm.objects(Employee.self).notify { [weak self] (employees) in
    
    // Log all employees
    employees.forEach { dump($0) }
}

指定希望接收哪种更新类型的通知。

let realm = try! Realm()
let token = realm.objects(Employee.self).notify(when: .inserted) { [weak self] (employees) in
    
    // Log all employees
    employees.forEach { dump($0) }
}

let token = realm.objects(Employee.self).notify(when: [.inserted, .deleted]) { [weak self] (employees) in
    
    // Log all employees
    employees.forEach { dump($0) }
}

在初始化和更新时接收通知。

let realm = try! Realm()
let token = realm.objects(Employee.self).fireAndNotify(when: .inserted) { [weak self] (employees) in
    
    // Log all employees
    employees.forEach { dump($0) }
}

let token = realm.objects(Employee.self).fireAndNotify(when: [.inserted, .modified]) { [weak self] (employees) in
    
    // Log all employees
    employees.forEach { dump($0) }
}

致谢

请提交任何有助于改进此项目的 pull requests,所有帮助都是受欢迎的。

许可协议

RealmSugar 在 Apache 许可下发布。有关详细信息,请参阅 LICENSE。