Unrealm 允许您轻松地将 Swift 本地 类、结构体 和 枚举 存储到 Realm 。
停止继承自 Object!追求协议导向编程!
由
特点
Unrealm 支持以下类型
- Swift 基本类型
- Swift 结构体
- Swift 类
- Swift 枚举
- Swift 数组
- Swift 字典
- 嵌套类/结构体
- Swift 可选 (String, Data, Date)
- 原语的可选 (Int, Float, Double, Bool)
- Realmables 可选
- 数组可选
- 枚举数组
示例项目
要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install
。
也请参阅 单元测试。
用法
您只需做的是
- 将您的类/结构体符合到《code>Realmable 协议而不是从《code>Object 继承。将您的枚举符合到《code>RealmableEnum 协议。
- 在 AppDelegate 的
didFinishLaunchingWithOptions
方法中注册您的类/结构体和枚举。
Realm.registerRealmables(ToDoItem.self)
就是这样!现在您可以像通常使用 Objc 类一样将结构体或类对象存储到 Realm 中。
优缺点
🎉
优点- 支持您存储 Swift 原生类型(结构体、类、枚举、数组、字典等)
- 避免从 Object 类继承带来的冗余
- 避免出现《code>Object has been deleted or invalidated 等Realm崩溃问题
- 避免出现《code>Realm accessed from incorrect thread 等Realm崩溃问题
- 避免使用像
@objc dynamic var
这样的样板代码。只需使用var
或let
- 避免使用像
RealmOptional<Int>
这样的样板代码。直接使用Int?
- 完美兼容 Swift 的 Codable 和可选类型!
🍟
缺点- 失去了“实时对象”功能。这意味着当您修改从 Realm 获取的对象时,其他对象将不会自动更新。因此,在修改对象后,您应手动在 realm 中更新它。例如:
let realm = try! Realm()
var todoItem = realm.object(ofType: ToDoItem.self, forPrimaryKey: "1")
todoItem.text = "Modified text"
try! realm.write {
realm.add(todoItem, update: true) //<- force Realm to update the object
}
安装
CocoaPods
Unrealm 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Unrealm'
Swift 包管理器
您还可以使用 Swift 包管理器将 Unrealm 添加为项目的依赖项。为此,请使用以下 URL
https://github.com/arturdev/Unrealm.git
您需要使用“master”分支而不是 SPM。
待办事项
- 添加更多单元测试
- 当依赖项可以添加到简单项目中的多个目标时,为 Swift 包管理器创建一个示例项目。
贡献
找到错误、打印错误,或有不好的文档说明?我们很高兴您能打开一个问题,告诉我我可以做些什么来改进!
欢迎贡献,并且我们会非常感激!
作者
arturdev,[email protected]
许可证
Unrealm 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。