领域写交易模式

时间:2017-11-08 23:07:56

标签: swift realm

两个主要问题。 Realm Swift Docs没有给出非常详细的写入事务示例。他们的例子强制尝试捕捉模式,他们只是说'不要在生产中做到这一点"。首先,我正在寻找一个非常好的模式来封装写事务。以下是我目前的工作:

// Define your models like regular Swift classes
public class Dog: Object {
    @objc public private(set) dynamic var name: String?
    public let age = RealmOptional<Int>()
    public private(set) var owner: Person?
}

//MARK: Extension that has functions to update properties
extension Dog {
    public func updateName(_ name: String?) throws {
        do{
            let realm = try Realm()
            let inWrite = realm.isInWriteTransaction
            if !inWrite {
                realm.beginWrite()
            }
            self.name = name
            if !inWrite {
                try realm.commitWrite()
            }
        }catch{
            throw error
        }
    }
}

这种模式反映了Realm使用的try catch模式,并再次保护当前正在写入事务中的域。对这种模式的想法?

我的第二个问题来自必须为我想要更改的每个属性编写这样的函数。他们是一个更有效的方法吗?请记住,如果将更改分组到单个写入事务中,Realm会变得更有效吗?

注意:这种抽象的需要来自于我通常将Realm放在像cocoapod这样的可重用库中。生活在UIViewController的许多交易代码变得非常混乱。

0 个答案:

没有答案