Meilleur moyen d'enregistrer dans nsuserdefaults pour une classe personnalisée?
Si j'ai une classe personnalisée Personne qui dispose de trois variables (qui sont propertized et synthétisé):
NSString* theName;
float* theHeight;
int theAge;
Personne instances sont stockés dans un NSArray 'Groupe'. Il n'y a qu'un seul Groupe. Quelle est la meilleure façon de les stocker et de charger le Groupe de NSUserDefaults? (en gardant à l'esprit que les float et int ne sont pas légales pour NSUserDefaults)
source d'informationauteur cannyboy
Vous devez vous connecter pour publier un commentaire.
@Brad Smith réponse n'est pas complète, et même est incorrect dans certains sens. Nous devons utiliser
NSKeyedArchiver
etNSKeyedUnarchiver
comme suit:Faire de votre classe (par exemple, dans ce cas
Person
) pour se conformer au protocoleNSCoding
et mettre en œuvre les méthodes comme:À l'aide de
NSUserDefaults
Je trouve la mise en œuvre de encodeWithCoder et initWithCoder assez ennuyeux, surtout si vous avez beaucoup d'attributs dans votre classe, et de nombreuses classes d'enregistrer à NSUserDefaults.
J'ai créer une bibliothèque RMMapper (https://github.com/roomorama/RMMapperpour aider à économiser l'objet personnalisé dans NSUserDefaults plus facile et plus commode.
Pour marquer une classe comme archivables, il suffit d'utiliser:
#import "NSObject+RMArchivable.h"
Pour enregistrer un objet personnalisé dans NSUserDefaults:
Pour obtenir personnalisé obj de NSUserDefaults: