我是初级iOS开发人员.我想重构我的代码.目前我想重构我的领域方法.为了保存或删除Realm中的数据,我需要在整个地方使用很多try try block,所以我想提供一个服务来处理这个问题.我试过但我不知道这是不是正确的方法
import RealmSwift
class RealmService {
private init() {}
static let shared = RealmService()
var realm = try! Realm()
func save(expression: ()) {
do {
try realm.write {
// I want to pass the expression in this block here
expression
}
} catch {
post(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
func saveToRealmDatabase(wishList: WishList, product: Product) {
RealmService.shared.save(expression: {
// I want to pass expression in the block in here as argument
wishList.products.append(product)
}())
}
Run Code Online (Sandbox Code Playgroud)
我想将表达式wishList.products.append(product)作为RealmService类中函数的参数传递.有没有更好的方法来实现这一目标?
你的"表达式"可以用类型表示() -> Void- 一个不接受任何参数并且什么都不返回的闭包.
这是您的方法应该声明的方式:
func save(expression: @escaping () -> Void) {
do {
try realm.write {
expression()
}
} catch {
post(error)
}
}
Run Code Online (Sandbox Code Playgroud)
这是你应该如何使用它:
func saveToRealmDatabase(wishList: WishList, product: Product) {
RealmService.shared.save(expression: {
wishList.products.append(product)
})
}
Run Code Online (Sandbox Code Playgroud)