Key-Value Observing and Predicate Frage

  • Key-Value Observing and Predicate Frage

    Als kleine CoreData Übung habe ich mir ein Tool gebaut, welches Java Class Namen aus Jars extrahiert und mir eine Suchfunktion über Namen und Packages bietet.

    Oftmals baut man ein Projekt, welches zwar wunderbar kompiliert, aber spätestens im Betrieb dann zu einer ClassNotFound Exception führt, weil man doch wieder ein Jar im Deployment vergessen hat.

    Das CoreData Modell ist ganz einfach: es gibt eine Class Entity und eine Jar Entity, wobei ein Jar mehrere Classes enthält (natürlich gibt es auch die Umkehrbeziehung).

    Im Gui habe ich jetzt einen Drawer (siehe Screenshot) gebaut, in dem ich einzelne Jars ein- oder ausschalten kann (eine Property der Jar Entity).

    Auf dem ArrayController, der die Classes im TableView kontrolliert, ist ein Predicate eingetragen: zeige nur die an, wo JarFile.useIt == YES ist. Dieses Predicate wird beim Start der Anwendung auch benutzt.

    Aber wie bekomme ich es hin, dass sich Änderungen im Drawer "live" auf den TableView auswirken?

    Imho ist Key-Value Observing schon die passende Richtung... mir fehlt nur noch der genaue Kurs ;)

    Viele Grüsse,
    Christian
  • RE: Key-Value Observing and Predicate Frage

    In diesem Falle empfehlen sich sogar Bindings.

    In der nächsten Ausgabe der Bibel wird es umfangreiche Erläuterungen zu KVC, KVO und Bindings geben. Vorab kannst du ja meinen Artikel in der Wiki lesen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: Key-Value Observing and Predicate Frage

    Oh, dann muss ich mir das genauer anschauen. :)

    Also, du hast ein Attribut "use", welches sich vom Drawer zum Hauptfenster nicht aktualisiert? Habe ich das richtig verstanden?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: Key-Value Observing and Predicate Frage

    Ja genau, das scheint das Problem zu sein.

    Ich habe das zip des Projektes mal in meinen PublicFolder der iDisk (User: cmittendorf) geworfen. Vielleicht findest du ja das fehlende Puzzlestück - wäre echt nett ;)

    Viele Grüsse,
    Christian
  • RE: Key-Value Observing and Predicate Frage

    Ich habe keine iDisk.

    Aber wir bekommen das auch so hin:
    Du willst, dass im Hauptfenster nur die selektierten (use) Packages landen. Ich nehme an, dass du deshalb im Array-Controller filterst. Oder wie kommst du dort an die Einträge?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: Key-Value Observing and Predicate Frage

    Das mit der iDisk ist kein Problem, du musst einfach im Finder unter "Gehe zu.. -> iDisk -> Öffentlicher Ordner eines anderen Benutzers" gehen und dort meinen Login eingeben.

    Der NSArrayController hat einen Predicate defniniert: jarFile.use == 1, gesetzt im IB über das Info Fenster. Das funktioniert beim Laden der Einträge auch wunderbar.
  • RE: Key-Value Observing and Predicate Frage

    Ok, dann schaue ich mir das heute abend mal an, wenn ich die Zeit finde.

    Hmm, klingt eigentlich richtig. Also, das generelle Problem bei derartigen Sachen ist, dass der Array-Controller in die Objekte des controllierten Arrays "hineinschauen" muss, was zur Anlage von ziemlich genau 9872397234987 Observationen führt. Er muss ja nicht nur das Array beobachten, sondern auch alle use-Attribute im Array.

    Hast du mal von Hand eine Update-Notification geschickt? Funktioniert es dann?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?