2017-02-01 5 views
3

Ich habe ein paar Probleme mit meiner MacOS-Anwendung und hoffe, Sie können mir helfen. Ich bin ziemlich neu auf macOS also bitte schön sein;)Realm + NSTableView + NSArrayController

Ein Teil der App besteht aus einem einfachen NSTableView, deren Inhalt an einen NSArrayController gebunden ist. Der NSArrayController wird aus einer Realm-Datenbank gespeist.

TableView

Wie Sie eine Checkbox gibt es für jede Zeile sehen, die den Bool-Wert im Bereich Objekt setzen soll.

Die Bindungen sind in Ordnung, wenn ich also das Kontrollkästchen markiere/deaktiviere, scheint es zu versuchen, auf das Realm-Objekt zu schreiben. Da Realm jedoch eine aktive Schreibtransaktion benötigt, die nicht ausgelöst wird, stürzt es ab.

Meine Frage ist: Wie kann ich auf Realm-Objekte mit Tabellenansicht Bindungen schreiben? Irgendwelche Ideen?

+0

Können Sie mir sagen, wie Sie mit Reich verwendet NSArrayController haben? – Johnykutty

+0

Ich bin jetzt auf der Straße, aber heute Nacht gebe ich dir ein Schnipsel;) –

+0

Danke Mann :). Habe Array-Controller mit Coredata verwendet. Aber in einigen Fällen (eine Tabelle enthält 300k Datensätze) ist die Filterung zu langsam. – Johnykutty

Antwort

1

könnten Sie versuchen, das folgende zu Ihrem Modell-Objekt hinzuzufügen (das Realm-Objekt):

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

Funktioniert wie ein Charme;) Vielen Dank! –

Verwandte Themen