PDA

View Full Version : Bindings - Error accessing value


Yannis
20 september 2009, 12:47
Momenteel ben ik me aan het inwerken in Objective-C - Cocoa en heb een Bindings tutorial (http://cocoadevcentral.com/articles/000080.php) gevolgd. Deze is in 2004 geschreven, dus met een pre XCode 3.2 versie gemaakt. Ik gebruik XCode van Snow Leopard (3.2 dus).

Je kan het al raden: het werkt niet :-)

Het project build en runt, maar bij opstart zie ik in console volgende foutmelding:

Running…
2009-09-20 12:13:15.714 MailClient[7054:a0f] Cocoa Bindings: Error accessing value for key path selection.emails of object <NSObjectController: 0x10012f600>[object class: NSMutableDictionary] (from bound object <NSArrayController: 0x1004145e0>[object class: Email, number of selected objects: 0]): [<MyController 0x100417de0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key emails.

Wanneer ik een email wil toevoegen aan de geselecteerde mailbox, lukt dit niet. Er wordt geen fout weergegeven in console. Wanneer ik een breekpunt zet in de methode "setEmails", zie ik dat de methode niet wordt opgeroepen, terwijl dit wel gebeurt wanneer ik dit doe voor mailboxes (breekpunt op setMailboxes).

Heeft deze fout te maken met het feit dat XCode niet doorheeft welk mailboxobject geselecteerd is? Kan ik dit oplossen door in MyController een accessor toe te voegen die de mailbox opzoekt in de mailboxes array en de array met emails teruggeeft? Hoe geraak ik dan aan de geselecteerde mailbox?

Of heeft dit te maken dat deze tutorial helemaal out-dated is en ik een andere werkwijze moet gebruiken? In geval van het laatste, weet er iemand een goede actuele tutorial, of een goed boek?

Mijn kennis van Objective-C / Cocoa / XCode is nog heel miniem. Ik ben een java-programmeur, dus "vakjargon" is me niet vreemd.

Alle hulp is welkom.

Xcode
20 september 2009, 19:31
Er is niets mis met het project hoor. Xcode upgrade die zonder problemen naar versie 3.2

Het probleem waar je waarschijnlijk mee sukkelt is dat de screenshots van Interface Builder die in de tutorial gebruikt worden van een oudere versie is en het is zeer gemakkelijk je weg erin te verliezen. En als je ook maar een foutje maakt in de binding settings krijg je dergelijke foutboodschappen. En aangezien je geen breakpoints kan zetten in een binding kan het een beetje lastig zijn om de fout te vinden.

In bijlage heb ik een gemodifieerde nib file gevoegd waarvan ik denk dat ze correct is. Ik denk dat je gewoon jouw nib file kan vervangen door deze nib file en het zou terug moeten werken.

Yannis
27 september 2009, 09:35
Bedankt. Heb het uitgeprobeerd en met jouw nib werkt het wel, hoewel ik op het eerste zicht geen verschillen merk tussen jouw configuratie en de mijne.

Maar goed, ik heb het boek Cocoa(R) Programming for Mac(R) OS X van Aaron Hillegass gekocht. Hiermee wat spelen, en dan probeer ik het opnieuw :-)