NSRangeException avec NSCoder
Nebuchad34
Membre
Bonjour,
Je rencontre un problème bizarre.
Dans une de mes classes qui sont conformes au NSCoding Protocol, j'encode et je décode des float en faisant :
Sur certains fichiers, j'ai une NSException de levée à l'ouverture lorsque l'on essaie de faire un initWithCoder de ce type d'objet. (mais ça ne le fait pas sur tous documents qui contiennent ses objets bizarrement !)
Dans la doc, il est noté que NSCoder lève une exceptuon sur "decodeFloatForKey", lorsque la valeur décodée ne rentre pas dans un float !
Comment peut il sortir autre chose qu'un float alors que j'ai encodé un float ??
De plus, si je fait :
percentage = (float)[coder decodeDoubleForKey:@percentage];
winning = (float)[coder decodeDoubleForKey:@winning];
au lieu d'utiliser decodeFloatForKey, eh bien ça marche parfaitement. Plus d'exceptions, et ce sont les bonnes valeurs qui sont chargées. What the Fuck ??? ???
Je rencontre un problème bizarre.
Dans une de mes classes qui sont conformes au NSCoding Protocol, j'encode et je décode des float en faisant :
- (void)encodeWithCoder:(NSCoder *)coder {<br /> <br /> [coder encodeFloat:percentage forKey:@"percentage"];<br /> [coder encodeFloat:winning forKey:@"winning"];<br /> [coder encodeBool:updateWithPercentage forKey:@"updateWithPercentage"];<br />}<br /><br />- (id)initWithCoder:(NSCoder *)coder {<br /> <br /> percentage = [coder decodeFloatForKey:@"percentage"];<br /> winning = [coder decodeFloatForKey:@"winning"];<br /> updateWithPercentage = [coder decodeBoolForKey:@"updateWithPercentage"];<br /> return self;<br />}<br /><br />
Sur certains fichiers, j'ai une NSException de levée à l'ouverture lorsque l'on essaie de faire un initWithCoder de ce type d'objet. (mais ça ne le fait pas sur tous documents qui contiennent ses objets bizarrement !)
Dans la doc, il est noté que NSCoder lève une exceptuon sur "decodeFloatForKey", lorsque la valeur décodée ne rentre pas dans un float !
Comment peut il sortir autre chose qu'un float alors que j'ai encodé un float ??
De plus, si je fait :
percentage = (float)[coder decodeDoubleForKey:@percentage];
winning = (float)[coder decodeDoubleForKey:@winning];
au lieu d'utiliser decodeFloatForKey, eh bien ça marche parfaitement. Plus d'exceptions, et ce sont les bonnes valeurs qui sont chargées. What the Fuck ??? ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si c'est un .plist, tu n'as qu'à l'ouvrir pour vérifier.
pas bête,
en uvrant le fichier vec Property List editor, j'ai pu retrouver les valeurs qui posent problèmes. Elles sont bien indiquées comem des Number, mais leur valeur est à "inf"