Ich habe eine Ansicht, die in jedem meiner CollectionView-Elemente verwendet wird. Ich habe ein IBOutlet zu dem CollectionViewItem aus meiner Sicht und ich habe das in Interface Builder angeschlossen. Ich möchte auf einen Wert von dem reprodedObject (das ein Core Data-Objekt ist) in meinem Ansichtscode zugreifen. Hier ist ein Beispiel dafür, was ich versuche zu tun - eine Sequenz Wert des representedObject zuzugreifen:Wie bekomme ich das reprodedObject aus einer Sicht in einem NSCollectionViewItem?
In der H-Datei:
IBOutlet NSCollectionViewItem *item; // Connected in IB
In der .m-Datei
NSString *seq = [[item representedObject] valueForKey:@"seq"];
NSLog(@"Seq: %@", seq); // returns Seq: (null)
Ich weiß, dass der Seq aufgefüllt ist, da ich es in IB mit dem Schlüsselpfad representObject.seq zu einem Label in der CollectionViewItem-Ansicht gebunden habe und das funktioniert.
Irgendeine Idee warum, wenn ich versuche, auf den Wert für seq im Code für die Ansicht zuzugreifen, gibt es Null zurück?
Danke, das hat den Trick gemacht. – Austin
Ich bin verwirrt von dieser Antwort. Zuerst gibt @kperryua Folgendes an: "Das typische Muster für den Zugriff auf die NSCollectionViewItem-Instanz besteht darin, sich an den Prototyp zu binden. Sie erwähnen, dass Sie dies getan haben und dass es funktioniert." Aber @ Austins Frage erwähnt nur die Verwendung des Schlüsselworts "representObject.seq" und in der Tat ist es schwer zu sehen, wie man den itemPrototyp von collectionView an die Ansicht eines collectionViewItems binden würde. Ich sage es ist unmöglich, aber ich bin froh, dass ich mich als falsch erwiesen habe. Zweitens, Apples Dokumentation für NSObject copyWithZone: explizit besagt "Sie sollten diese Methode nicht überschreiben." –
Override copyWithZone: ist ziemlich sicher, solange die Superklasse allocWithZone: darin aufgerufen wird. Habe nicht überprüft, ob sie tatsächlich sagen, es nicht zu tun, aber irgendwie denke ich, dass du es mit allocWithZone verwechseln kannst: oder so etwas. – ctpenrose