2010-09-18 4 views
4

Cela permettra d'économiser un tableau (je pense). Dois-je appeler directement cette méthode lorsque je veux enregistrer un tableau ou dois-je faire quelque chose d'autre?Quand est-ce que encodeWithCoder est appelé?

+0

Ne pas oublier d'appeler super: - (void) encodeWithCoder: (NSCoder *) {encodeur [super encodeWithCoder: codeur]; [encoder encodeObject: myArray forKey: @ "myArray"]; } – Magnus

Répondre

8

Vous n'appelez pas cette méthode directement. Il est appelé par une sous-classe NSCoder s'il doit sérialiser cet objet. Si vous souhaitez coder un graphique d'objet, utilisez les méthodes de classe archivedDataWithRootObject: ou archiveRootObject:toFile: de NSKeyedArchiver. Cela appellera à son tour la méthode encodeWithCoder: de vos objets. Notez également que chaque objet de votre tableau doit implémenter le protocole NSCoding.

+0

J'utilise la bibliothèque RMMapper pour définir la valeur dans UserDefaults. La bibliothèque utilise NSData * encodedObject = [NSKeyedArchiver archivedDataWithRootObject: obj]; pour encoder l'objet mais toujours cette méthode n'est pas appelée. J'ai été coincé sur cette question pour longtemps. Peux-tu m'aider avec ceci? –

Questions connexes