2017-04-22 15 views
0

(レルムプロパティを保存するための最良の方法を探しているの文字列を守っ\ \更新を保存します。レルム、最善のアプローチは、レルムオブジェクトへ

を私はレルム・オブジェクトから塗りつぶしなどのTextViewの多い、とのUIViewControllerを持っています。

テキストフィールドが変更されるたびに、私は国連にレルムプロパティを変更するために返送する必要があります。

(クールではない)事を、私は書き込みトランザクションを開く必要があり、私は直接保存することができないということです。

object.propertyA= “hello” // crash 

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

だから、私はすべてのテキストのために少し痛い(と清潔ではない)ことを発見した。

私はrxRealmを見ましたが、それを作るための(初心者の)サンプルは見えません。

だから、私は2アプローチ国連の心を持っている

  1. プロパティ

    のvar beerNameのモデルgetterとsetterを変更:文字列? { { return self.Name } { try! realm.write {
    self.txtName = beerName! }}

  2. ここで(https://www.raywenderlich.com/149753/bond-tutorial-bindings-swift)からRXSwiftアプローチを使用

    • ビングTextField.text VAR列に、そして書き込むために、この文字列を観察します。

あなたはどう思いますか?

私の完璧な世界は、直接TextField.textプロパティをBINGする方法を見つけるようになります

: myRealmObject.property.BindTo(self.txtName)

答えて

0

変更writeブロック内のプロパティ:

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

ここから王子。最良のアプローチではありませんが、私は別の方法を提案します。長寿命トランザクションのブロックベースAPIの代わりにrealm.beginWrite()try! realm.commitWrite()を使用できます。ビューが現れたときにたとえば、あなたが取引を開くことができ、その後、表示が消えたときは、次のように、トランザクションを閉じ

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    realm.beginWrite() 
} 

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

この方法では、レルムに値を割り当てることができますビューの任意の時点でオブジェクト。 トランザクションを開いたままにしないでください。ファイルサイズの増加を避けるため、トランザクションが開いている間はバックグラウンドで頻繁にデータを更新しないでください。

関連する問題