[Résolu] Problème avec Tuto Bindings de la doc officielle
Grosquick
Membre
Bonjour,
Je suis en train d'apprendre la programmation Cocoa. J'ai un petit soucis avec un tutorial que je tente de reproduire.
Voici le lien : http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CurrencyConverterBindings/01introduction/introduction.html
En fait le problème semble se situer au niveau de la méthode initialize de la classe modèle Converter.
Xcode (4) me dit que la méthode setKeys:triggerChangeNotificationsForDependentKey: est obsolète et qu'il faut utiliser à la place keyPathsForValuesAffectingValueForKey:, mais je ne vois pas comment remplacer un message à 2 paramètres par un autre à 1 seul paramètre...
Bref dans tous les cas j'ai un plantage à l'exécution :
Je pense qu'il s'agit de la clé amountInOtherCurrency qui n'existe pas (j'ai néanmoins tout fait comme dans le tuto).
Auriez-vous une idée ?
Merci d'avance.
Je suis en train d'apprendre la programmation Cocoa. J'ai un petit soucis avec un tutorial que je tente de reproduire.
Voici le lien : http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CurrencyConverterBindings/01introduction/introduction.html
En fait le problème semble se situer au niveau de la méthode initialize de la classe modèle Converter.
+ (void)initialize {<br /> [Converter setKeys:<br /> [NSArray arrayWithObjects:@"dollarsToConvert", @"exchangeRate", nil]<br /> triggerChangeNotificationsForDependentKey:@"amountInOtherCurrency"];<br />}
Xcode (4) me dit que la méthode setKeys:triggerChangeNotificationsForDependentKey: est obsolète et qu'il faut utiliser à la place keyPathsForValuesAffectingValueForKey:, mais je ne vois pas comment remplacer un message à 2 paramètres par un autre à 1 seul paramètre...
Bref dans tous les cas j'ai un plantage à l'exécution :
<br />2011-06-16 19:06:50.117 CurrencyConverter[17521:903] An uncaught exception was raised<br />2011-06-16 19:06:50.118 CurrencyConverter[17521:903] [<Converter 0x100133c60> valueForUndefinedKey:]: this class is not key value coding-compliant for the key amountInOtherCurrency.<br />2011-06-16 19:06:50.120 CurrencyConverter[17521:903] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Converter 0x100133c60> valueForUndefinedKey:]: this class is not key value coding-compliant for the key amountInOtherCurrency.'<br />*** Call stack at first throw:<br />(<br /> 0 CoreFoundation 0x00007fff8246f7b4 __exceptionPreprocess + 180<br /> 1 libobjc.A.dylib 0x00007fff87d520f3 objc_exception_throw + 45<br /> 2 CoreFoundation 0x00007fff824c7969 -[NSException raise] + 9<br /> 3 Foundation 0x00007fff82b2fb96 -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 245<br /> 4 Foundation 0x00007fff82a5f488 -[NSObject(NSKeyValueCoding) valueForKey:] + 420<br /> 5 Foundation 0x00007fff82a62dcc -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 226<br /> 6 Foundation 0x00007fff82a62e62 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 376<br /> 7 AppKit 0x00007fff84348b17 -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 171<br /> 8 AppKit 0x00007fff843bd8fa -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 601<br /> 9 AppKit 0x00007fff843bd60c -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 282<br /> 10 AppKit 0x00007fff84472741 -[NSTextValueBinder _observeValueForKeyPath:ofObject:context:] + 43<br /> 11 AppKit 0x00007fff8433b9d7 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 557<br /> 12 AppKit 0x00007fff843184e2 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1172<br /> 13 AppKit 0x00007fff84316829 loadNib + 226<br /> 14 AppKit 0x00007fff84315d36 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 248<br /> 15 AppKit 0x00007fff84315b6e +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 326<br /> 16 AppKit 0x00007fff843130ef NSApplicationMain + 279<br /> 17 CurrencyConverter 0x00000001000014c2 main + 34<br /> 18 CurrencyConverter 0x0000000100001494 start + 52<br />)<br />terminate called after throwing an instance of 'NSException'<br />
Je pense qu'il s'agit de la clé amountInOtherCurrency qui n'existe pas (j'ai néanmoins tout fait comme dans le tuto).
Auriez-vous une idée ?
Merci d'avance.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Commencer par un tutorial parlant des Bindings, c'est pas la voie la plus simple que tu as choisi ::)
Je te conseille de commencer par un tutorial beaucoup plus simple, gestion d'une fenêtre, affichage d'un bouton etc etc
En mettant le nom de la clef dans le nom de la méthode: [tt]keyPathsForValuesAffectingValueForAmountInOtherCurrency:[/tt] ?
Un exemple ici (descendre jusqu'au listing 2).
Tout le charme des conventions
Voici le code de la classe Converter qui fonctionne correctement (pour ceux que ça intéresse) :
MAJ : J'ai trouvé il faut cocher Continuously Update Value dans la section Bindings Inspector (pour les deux premiers champs de texte) !