2017-02-01 6 views
3

私のmacOSアプリケーションにいくつかの問題があり、あなたが私を助けてくれることを願っています。 私はかなり新しいMacOSでいいですよね)レルム+ NSTableView + NSArrayController

アプリの一部は、NSArrayControllerにバインドされた単純なNSTableViewで構成されています。 NSArrayControllerは領域データベースから供給されます。

TableView

レルムオブジェクトにブール値を設定する必要があり、行ごとにチェックボックスがあり、見ることができるように。

バインディングはOKです。したがって、チェックボックスをオンまたはオフにすると、レルムオブジェクトに書き込むように見えます。 しかし、レルムは起動されないアクティブな書き込みトランザクションを必要とするため、クラッシュします。

私の質問: レルムオブジェクトにテーブルビューバインディングを書き込むにはどうすればよいですか? アイデア

+0

あなたがレルムにNSArrayControllerは使用しなかった方法を教えてもらえますか? – Johnykutty

+0

今は道路にいますが、今夜はスニペットを教えてください;) –

+0

ありがとうございます:)。 coredataでアレイコントローラを使用しました。しかし、場合によっては(テーブルに300kレコードが含まれています)フィルタリングが遅すぎます。 – Johnykutty

答えて

1

あなたのモデルオブジェクト(レルムオブジェクト)に以下を追加しようとすることができます:

override func setValue(_ value: Any?, forKey key: String) { 
    try! realm?.write { 
     self.mySetValue(value, forKeyPath: key) // bug in swift preventing directly calling super here 
    } 
} 

private func mySetValue (_ value: Any?, forKeyPath key: String) { 
    super.setValue(value, forKey: key) 
} 
+0

魅力的な作品;)ありがとうございます! –

関連する問題