2017-02-01 3 views
3

J'ai des problèmes avec mon application macOS et j'espère que vous pourrez m'aider. Im assez nouveau sur macOS alors s'il vous plaît soyez gentil;)Royaume + NSTableView + NSArrayController

Une partie de l'application se compose d'un simple NSTableView dont le contenu est lié à un NSArrayController. NSArrayController est alimenté à partir d'une base de données de domaine.

TableView

Comme vous pouvez le voir, il y a une case à cocher pour chaque ligne, qui devrait définir la valeur bool dans l'objet royaume. Les liaisons sont correctes, donc si je coche/décoche la case, il semble essayer d'écrire sur l'objet de domaine. Mais puisque le domaine nécessite une transaction d'écriture active, qui ne sera pas déclenchée, il se bloque.

Ma question est: Comment puis-je écrire sur des objets de domaine avec des liaisons de vue de table? Des idées?

+0

Pouvez-vous me dire comment avez-vous utilisé NSArrayController avec royaume? – Johnykutty

+0

Im sur la route maintenant, mais ce soir, je vais vous donner un extrait;) –

+0

Merci l'homme :). Avoir utilisé le contrôleur de tableau avec coredata. Mais dans certains cas (une table contient 300 000 enregistrements), le filtrage est trop lent. – Johnykutty

Répondre

1

Vous pouvez essayer d'ajouter ce qui suit à votre modèle d'objet (l'objet Realm):

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

Fonctionne comme un charme;) Merci beaucoup! –