一个用于生成一些可用于在 Realm 数据库上执行 CRUD 操作的方法的宏。
以下代码定义了一个 Todo
对象,它代表存储在 Realm 中的简单数据。
@GenCrud
class Todo: Object {
@Persisted(primaryKey: true) var _id: ObjectId
@Persisted var name: String
@Persisted var owner: String
@Persisted var status: String
}
将 @GenCrud
宏添加到 Object
,CRUD 方法将自动生成,并且可以像下面这样使用。
// MARK: Create
let todo = try await Todo.create(
_id: .generate(),
name: "Sample name",
owner: "Sample owner",
status: "Sample status"
)
// MARK: Update
try await todo.update(name: "Updated name")
// MARK: Delete
try await todo.delete()
// MARK: Get all List
let todos = try await Todo.list()
print(todos)
// MARK: Observe all List
let stream = try await Todo.observe()
for try await todoChange in stream {
switch todoChange {
case .initial(let todos):
print(todos)
case let .update(updatedTodos, _, _, _):
print(updatedTodos)
case .error(let error):
print(error)
}
}
欢迎提交 Pull Requests、Bug 报告和功能请求 🚀