Bindings : value for undefined key
muqaddar
Administrateur
Salut les louloutes,
J'ai fait le tutorial de CocoaDevCentral sur les bindings ici :
http://cocoadevcentral.com/articles/000080.php
Si j'ai à peu près compris, en revanche j'ai cette erreur à la compil :
2004-07-20 10:19:31.797 MailDemo[7707] *** Uncaught exception: <NSUnknownKeyException> [<MyController 0x341df0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key emails.
J'ai revérifié toutes mes connections ds IB au niveau des bindings et je trouve pas la couille du potage.
J'ai fait le tutorial de CocoaDevCentral sur les bindings ici :
http://cocoadevcentral.com/articles/000080.php
Si j'ai à peu près compris, en revanche j'ai cette erreur à la compil :
2004-07-20 10:19:31.797 MailDemo[7707] *** Uncaught exception: <NSUnknownKeyException> [<MyController 0x341df0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key emails.
J'ai revérifié toutes mes connections ds IB au niveau des bindings et je trouve pas la couille du potage.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu as peut-être une faute de frappe dans l'interface?
Compilé avant les bindings, il n'y avait pas d'erreur. Ensuite, ça s'est passé dans IB.
J'ai jetté un oeil au tuto en question: TRES BIEN
Il me semble qu'il n'y a que le NSArrayController dénomé emails qui soit bindé avec la clef "emails" (bindé sur l'autre NSArrayController mailboxes)
Les autres objets n'utilisent jamais cette clef (ou modelKeyPath)
Ce message signifie que le contrôleur se plaint de ne pouvoir trouver d'accesseurs ou propriété pour la clef "emails" sur l'objet cible (bind to) du binding.
Et donc, en théorie c'est ici le NSArrayController dénommé "emails" qui se plaint, vérifies en les bindings sous I.B.
Et tiens nous au jus
Je suis comme dans le tut :
object class name : Email
bind to : Mailboxes (l'autre controller)
controller key : selection
model key path : email
Tjs le même message.
ça évite de supprimer MyController, c'est ça , et il hérite de tout son contenu ?
C'est pas plutot:
model key path: emails ? (avec un s)
tout simplement ?
Ta question me semble une peu confuse,
Le NSObjectController dénommé controllerAlias ne sert qu'à permettre l'accès, par les bindings, a la variable d'instance du MyController: le tableaux _mailboxes.
Il pourait servir à binder sur d'autres variable d'instances également s'il y en avait.
ça éclaire ta lanterne ?
Oui, oui, c'est tout simplement ce que j'avais mis... je me suis planté en recopiant.
Oui, un peu. Je vais m'atteler dans pas longtemps à la création d'une petite appli pour voir si j'ai à peu près compris.
Et comme ça, ça marche maintenant ?
ouais,
je m'en doutais un peu car ton message d'erreur citait la clef "emails" avec un s aussi !
Bon je repose un peu mes cellules grises et je les relance là dessus après.
Je suis sûr que c'est tout bête, genre faute de typo ou content du NSObject mal défini, ou encore le NSArrayController des mails boxes mal bindé qui ne renvoie pas de valeur pour emails.
Jette un eoil sur ton mailboxes controller en attendant
@+
Je joins le projet :
[Fichier joint supprimé par l'administrateur]
Ton projet est bon, mais t'as peut-être mis le doigt sur un bug d'I.B. !!
Je m'explique:
Au lancement j'ai obtenu 2 messages d'erreurs d'un NSArrayController mais sur la clef "properties" et non email ...
Saisi d'un doute j'ai voulu identifier quel contrôleur plantait (car ils utilisent tous deux une clef properties)
Dans I.B., j'ai donc décoché la case "raise for not applicable" du contrôleur email, sauvegardé le nib puis recompilé et exécuté: ça a marché ! (c'est un bon truc quand on a plusieurs contrôleur pour identifier le fautif)
Pour faire la preuve de la culpabilité du contrôleur email j'ai ensuite recoché sa case "raise for not applicable"Â et décoché celle du contrôleur mailboxes. Sauvegarde du nib puis compil-exec: ça marche aussi !!!
De retour sous une troisième fois sous I.B. je recoche le "raise for not applicable"Â pour les 2 ArrayControllers (donc retour à l'état initial) et ...
... ça marche !!!! ???
Je suis curieux de savoir si c'est bien un bug d'I.B., regardes de ton coté ...
P.S. Par contre, je sais pas si c'est normal, mais y'a pas de possibilité de sauvegarde des boites et emails !!??
Pour la sauvegarde, c'est normal, c'est juste une appli test...
Bon, c'est pas grave. L'essentiel c'est de comprendre ce qu'on fait.
Merci cliccool !
"2 inconsistencies in the document were found and repaired. Please save the document",
Si tu veux que je te renvoie les fichiers que tu as perdu, y'a qu'à demander
Le plus enuyeux c'est que après un comportement bizard de Xcode, voilà que t'as des soucis avec I.B.
Peut-être devrais-tu faire un peu le ménage, virer les prefs etc... et au pire, réinstaller les devTools ?
Je testerai sur mon autre machine : un PB 15".
Je veux bien le fichier réparé en attendant stp.
Merci.
je t'ai envoyé le nib réparé.
P.S. j'ai pas su faire la manip pour le rendre accessible par un lien dans un post ... ??? :-\
C'était donc bien le .nib qui était corrompu !
Le programme marche maintenant. :-)
Merci.