J'utilise l'encodage pour la première fois afin de sauvegarder les données de mon application. Les exemples que j'ai regardés disent d'appeler [super encodeWithCoder:coder];
pour les classes personnalisées.NSObject ne prend pas en charge encodeWithCoder?
J'ai une classe qui s'étend NSObject
mais j'obtiens le message d'erreur ci-dessous. Est-ce parce que NSObject
est la classe de base et n'a rien à coder?
type de récepteur 'NSObject', par exemple, un message ne déclare pas une méthode avec le sélecteur 'encodeWithCoder:'
- (void)encodeWithCoder:(NSCoder *) coder
{
[super encodeWithCoder:coder]; // <-------------------------ERROR
[coder encodeInt:noteIndex forKey:@"noteIndex"];
[coder encodeCGRect:cellRect forKey:@"cellRect"];
[coder encodeBool:noteOn forKey: @"noteOn"];
[coder encodeInt:note forKey:@"note"];
[coder encodeInt:velocity forKey:@"velocity"];
[coder encodeInt:channel forKey:@"channel"];
[coder encodeInt:releaseVelocity forKey:@"releaseVelocity"];
[coder encodeFloat:duration forKey:@"duration"];
}
génial - merci. –
devez-vous maintenant appeler explicitement 'initWithCode: (NSCoder *) decoder' lors de l'instanciation de l'objet? Si oui, que faites-vous passer pour 'décodeur'? – greenhouse
peu importe, j'ai testé et vous ne devez pas explicitement l'appeler, merci! – greenhouse