Question

J'ai des problèmes en utilisant la NSKeyedArchiver / NSKeyedUnarchiver pour sauver mon objet.
J'ai ajouté les méthodes - (id)initWithCoder:(NSCoder *)decoder et - (void)encodeWithCoder:(NSCoder *)encoder. Le problème est lorsque je tente d'enregistrer l'objet, il ne fonctionne pas correctement.
Je pourrais imaginer un problème (mais je ne suis pas sûr si c'est le problème;)). J'ai quelques tableaux dans mon objet. Ils contiennent plus d'objets (je mis en œuvre à la fois des « Coder » -Méthodes aussi bien). Ainsi, le tableau n'appelle les méthodes dans les objets de elle?

Toute solution possible ??

Merci !!

Était-ce utile?

La solution

Dans le fichier d'en-tête indique que votre classe mettra en œuvre le protocole NSCoding, comme <NSCoding>

Dans la méthode encodeWithCoder vous devez encoder tous les champs que vous souhaitez enregistrer comme ceci:

[encoder encodeObject:array1 forKey:@"array1"];

Ensuite, dans le procédé de initWithCoder, décoder les champs qui ont été codés:

array1 = [coder decodeObjectForKey:@"array1"];

Assurez-vous que tous les contenants encodées ne contiennent que des objets qui mettent en œuvre également le protocole NSCoding. Cela pourrait être des classes de base telles que NSString, NSNumber, NSArray, NSDictionary, ainsi que votre propre objet personnalisé.

Si votre projet n'utilise pas la collecte des ordures dont vous avez besoin de conserver ou de copier les données extraites de l'archive comme ceci:

array1 = [[coder decodeObjectForKey:@"array1"] retain];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top