首页 文章

领域,保存\更新的最佳方法\观察字符串到Realm对象

提问于
浏览
0

(寻找拯救Realm property 的最佳方法 .

我有一个UIViewController与很多TextView等,我从一个Realm对象填充 .

每次修改文本字段时,我都需要发回以更改领域属性 .

(不酷)的事情,是我无法直接保存,我必须打开一个写事务 .

object.propertyA= “hello”    // crash

try! realm.write {      //work
        userBeer?.Name = lblbeerName.text!
}

所以,我发现所有文本都有点痛苦(而且不干净) .

我看过rxRealm,但看不到任何(新手)样本 .

所以,我有两种方法不介意

  • 修改属性的模型getter和setter

var beerName:String? {get 设置{试试! realm.write }

你怎么看?

我完美的世界将是找到一种方法来直接绑定TextField.text属性,例如:myRealmObject.property.BindTo(self.txtName)

2 回答

  • 0

    更改 write 块中的属性:

    try! realm.write {
        object.propertyA = “hello”
        userBeer?.Name = lblbeerName.text!
    }
    
  • 1

    来自Realm的Katsumi在这里 . 虽然这不是最好的方法,但我提出了另一种方法 . 对于长期事务,您可以使用 realm.beginWrite()try! realm.commitWrite() 而不是基于块的API .

    例如,您可以在视图出现时打开事务,然后在视图消失时关闭事务,如下所示:

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        realm.beginWrite()
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        try! realm.commitWrite()
    }
    

    通过这种方式,您可以随时在视图中为Realm对象赋值 . 小心不要让交易保持开放 . 为避免增加文件大小,请勿在事务处理期间在后台频繁更新数据 .

相关问题