Background Realm
Background Realm 是一系列方便的类和扩展,使在后台使用 RealmSwift
更加容易。
它的主要目标是通过对现有的 Realm
和基于 Realm 的代码库进行微小的开销和重构,来增强它们。
注意:尽管此模块使在后台使用 Realm
更加方便,但它 并不 使 Realm
和其对象线程安全。它们仍然应该只在它们适当的线程中访问。
Specs
- RealmSwift 10.0.0+
- iOS 12+
- tvOS 12+
- watchOS 4+
- macOS 10.12+
- Swift 5.0+
Objective-C
有关 Objective-C 的等效部分,请参阅 BLBackgroundRealm。
在后台向 Realm 写入
在后台执行写事务变得和这样一样简单:
Realm.writeInBackground(configuration: <#T##Realm.Configuration?#>) { (result) in
<#code#>
}
可选地,您可以设置一个默认的 backgroundConfiguration
,它将在所有后台写事务中使用
Realm.Configuration.backgroundConfiguration = <#T##Realm.Configuration?#>
Realm.writeInBackground { (result) in
<#code#>
}
最后,您可以轻松地将任何 Realm
实例移动到其后台对应版本
let realm = try Realm()
realm.writeInBackground { (result) in
<#code#>
}
向后台 Realm 提交
类似于写操作,您可以将事务提交到后台的 Realm
。不同的是,提交可以取消
Realm.commitInBackground(configuration: <#T##Realm.Configuration?#>) { (result) -> Bool in
<#code#>
return false //return true if you want to cancel this write operation
}
您还可以从任何 Realm
实例移动到其后台对应版本
let realm = try Realm()
realm.commitInBackground { (result) -> Bool in
<#code#>
return false //return true if you want to cancel this write operation
}
BackgroundRealm
Background Realm 提供了一个 BackgroundRealm
类,基本上
- 创建一个私有的
Thread
和RunLoop
,其中将打开新的后台Realm
- 在私有线程中打开
Realm
- 在后台线程中运行工作
如果您想
- 对
Realm
进行计算密集型的更改,这将特别有用 - 在后台注册更改通知,不必立即触发 UI 更新
用法
- 使用
Realm.Configuration.backgroundConfiguration
创建BackgroundRealm
let backgroundRealm = BackgroundRealm { (result) in
<#code#>
}
- 使用自定义配置创建
BackgroundRealm
let backgroundRealm = BackgroundRealm(configuration: <#T##Realm.Configuration?#>) { (result) in
<#code#>
}
- 使用文件
URL
创建BackgroundRealm
let backgroundRealm = BackgroundRealm(fileURL: <#T##URL#>) { (result) in
<#code#>
}
队列
BackgroundRealm
使用两个队列在后台处理事务
DispatchQueue.backgroundRealm
OperationQueue.backgroundRealm
如果您想使用自己的队列,请在应用程序的生命周期中尽早设置它们。
安装
CocoaPods
pod 'BackgroundRealm', '~> 3.0'
然后在需要的地方导入 import BackgroundRealm
。
Carthage
github "BellAppLab/BackgroundRealm" ~> 3.0
然后在需要的地方导入 import BackgroundRealm
。
Swift 包管理器
.package(url: "https://github.com/BellAppLab/BackgroundRealm.git", from: "3.0.0")
Git 子模块
cd toYourProjectsFolder
git submodule add -b submodule --name BackgroundRealm https://github.com/BellAppLab/BackgroundRealm.git
然后,将 BackgroundRealm
文件夹拖入你的 Xcode 项目中。
作者
Bell App Lab, [email protected]
贡献
查看这里。
致谢
标志图像由mikicon提供,来源于Word Project
许可证
BackgroundRealm遵循MIT许可证。有关更多信息,请参阅LICENSE文件。