2010-08-02 5 views
0

Je voudrais enregistrer un dans NSUserDefaults, tableau de contrôleurs de vue, mais je ne suis pas sûr de savoir comment:Comment sauvegarder un tableau en NSUserDefaults?

[[NSUserDefaults standardUserDefaults] setObject:tabBarController.viewControllers forKey:@"tabOrder"]; 

Quand je lis la ligne ci-dessus, mes tabBarController.viewControllers est vide.

+0

en double de ceci: http://stackoverflow.com/questions/3389593/saving-uitabbarcontroller-view-controllers-to-nsuserdefaults-doesnt-work S'il vous plaît ne demandez pas la même question dans deux questions différentes. – jer

Répondre

2

Les contrôleurs de vue de ce tableau ne sont pas sérialisables et ne seront donc pas enregistrés dans NSUserDefaults.

De l'NSUserDefaults reference:

Le paramètre de valeur ne peut être que des objets de la liste des biens: NSData, NSString, NSNumber, NSDate, NSArray ou NSDictionary. Pour les objets NSArray et NSDictionary, leur contenu doit être des objets de liste de propriétés. Voir "Qu'est-ce qu'une liste de propriétés?" Dans le Guide de programmation de la liste des propriétés.

Vous devez réinitialiser vos contrôleurs de vue lors du chargement suivant. Vous pouvez cependant sérialiser leurs données à NSUserDefaults à certains champs personnalisés.

0

avant que vous pouvez enregistrer l'objet avec NSUserDefault ..

[[NSUserDefaults standardUserDefaults] setObject: [NSKeyedArchiver archivedDataWithRootObject: self.flipsideView.zoznamFunkcii] forKey: @ "NSMutableArray"]; [[NSUserDefaults standardUserDefaults] synchronize];

et vous faites méthode codeur et décodeur

  • (id) initWithCoder: décodeur (NSCoder *) { if (self = [super init]) { self.toolResult = [décodeur decodeObjectForKey: @ "obj1"]; self.toolNotes = [décodeur decodeObjectForKey: @ "obj2"];

    } retournez-vous; }

  • (void) encodeWithCoder: (NSCoder *) {encodeur [encodeur encodeObject: self.toolResult forKey: @ "obj1"]; [encoder encodeObject: self.toolNotes forKey: @ "obj2"];

}

vos données Sauver dans NsuserDefault Lorsque vous obtenez des données De NsUserDefault vous utilisez comme [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @ "NSMutableArray"]];

Questions connexes