Hallo,
ich habe mir eine kleine App gebaut um CoreData zu lernen. Dazu habe ich ein Entity Student angelegt mit ein paar Properties. Bevor ich zu meinem Problem komme erkläre ich kurz wie meine App aufgebaut ist.
Letztlich möchte ich einen SplitView haben, in dem links in einer TableView alle Studenten angezeigt werden (und hinzugefügt/gelöscht werden können) und rechts alle weiteren Properties angezeigt und bearbeitet werden können. Zusätzlich soll rechts ein Platzhalter View angezeigt werden sollte nichts in der Tabelle angewählt sein. Derzeit sieht es folgendermaßen aus:
App.png
Das dazugehörige Storyboard:
Xcode.png
Eigentlich klappt das ganze auch schon ganz gut. In meinem ListViewController (enthält den ArrayController [studentArrayController Outlet] für die CoreData Entities) übergebe ich den aktuell ausgewählten Studenten via
Alles anzeigen
Der StudentViewController hat bisher nur eine var student = Student() die ich im obigen Code setze. Ich habe auch mit einer IBAction überprüft ob die properties des gerade ausgewählten Studenten auch korrekt ankommen, was sie tun. Nun habe ich gehofft ich könnte einfach die Textfelder im StudentViewController im Storyboard via bindings an self.student.propertyname binden. Lege ich ein solches binding an stürzt die App aber direkt ab.
2017-01-26 16:49:54.390907 CoreDataArrayController[11444:426772] [error] error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'CoreDataArrayController.Student'
CoreData: error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'CoreDataArrayController.Student'
2017-01-26 16:49:54.447499 CoreDataArrayController[11444:426772] Failed to set (contentViewController) user defined inspected property on (NSWindow): [<CoreDataArrayController.Student 0x6080000665c0> valueForUndefinedKey:]: the entity (null) is not key value coding-compliant for the key "familyName".
2017-01-26 16:49:54.581086 CoreDataArrayController[11444:426772] [General] An instance 0x6080000665c0 of class CoreDataArrayController.Student was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x600000024ac0> (
<NSKeyValueObservance 0x60000004f6c0: Observer: 0x60000004f5a0, Key path: familyName, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x60000004f6f0>
)
Lange Rede kurzer Sinn: Ich habe das Projekt mal angehängt falls nicht klar geworden ist was mein Problem ist.
ich habe mir eine kleine App gebaut um CoreData zu lernen. Dazu habe ich ein Entity Student angelegt mit ein paar Properties. Bevor ich zu meinem Problem komme erkläre ich kurz wie meine App aufgebaut ist.
Letztlich möchte ich einen SplitView haben, in dem links in einer TableView alle Studenten angezeigt werden (und hinzugefügt/gelöscht werden können) und rechts alle weiteren Properties angezeigt und bearbeitet werden können. Zusätzlich soll rechts ein Platzhalter View angezeigt werden sollte nichts in der Tabelle angewählt sein. Derzeit sieht es folgendermaßen aus:
App.png
Das dazugehörige Storyboard:
Xcode.png
Eigentlich klappt das ganze auch schon ganz gut. In meinem ListViewController (enthält den ArrayController [studentArrayController Outlet] für die CoreData Entities) übergebe ich den aktuell ausgewählten Studenten via
Quellcode
- func tableViewSelectionDidChange(_ notification: Notification) {
- let tableView = notification.object! as! NSTableView
- let selectedRow = tableView.selectedRow
- let tabViewController = parent?.childViewControllers[1] as! NSTabViewController
- if selectedRow != -1 { // A row is indeed selected
- tabViewController.selectedTabViewItemIndex = 0
- let studentTabView = tabViewController.tabViewItems[0].viewController as! StudentViewController
- let selectedStudent = self.studentArrayController.selectedObjects[0]
- studentTabView.student = selectedStudent as! Student // Hier setze ich die var student des StudentViewControllers
- } else {
- tabViewController.selectedTabViewItemIndex = 1
- }
- }
2017-01-26 16:49:54.390907 CoreDataArrayController[11444:426772] [error] error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'CoreDataArrayController.Student'
CoreData: error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'CoreDataArrayController.Student'
2017-01-26 16:49:54.447499 CoreDataArrayController[11444:426772] Failed to set (contentViewController) user defined inspected property on (NSWindow): [<CoreDataArrayController.Student 0x6080000665c0> valueForUndefinedKey:]: the entity (null) is not key value coding-compliant for the key "familyName".
2017-01-26 16:49:54.581086 CoreDataArrayController[11444:426772] [General] An instance 0x6080000665c0 of class CoreDataArrayController.Student was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x600000024ac0> (
<NSKeyValueObservance 0x60000004f6c0: Observer: 0x60000004f5a0, Key path: familyName, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x60000004f6f0>
)
Lange Rede kurzer Sinn: Ich habe das Projekt mal angehängt falls nicht klar geworden ist was mein Problem ist.