Je m'excuse pour dupliquer Question. Je suis nouveau dans ios. Je veux stocker des objets personnalisés dans userdefaults. J'utilise l'objectif-c.comment peut stocker des objets personnalisés dans NSUserDefaults
Merci à l'avance
Je m'excuse pour dupliquer Question. Je suis nouveau dans ios. Je veux stocker des objets personnalisés dans userdefaults. J'utilise l'objectif-c.comment peut stocker des objets personnalisés dans NSUserDefaults
Merci à l'avance
D'abord vous créez classe personnalisée comme ci-dessous.
CustomObject.h
#import <Foundation/Foundation.h>
@interface CustomObject : NSObject<NSCoding>
@property(strong,nonatomic)NSString *name;
@end
CustomObject.m
#import "CustomObject.h"
@implementation CustomObject
- (void)encodeWithCoder:(NSCoder *)encoder {
//Encode properties, other class variables, etc
[encoder encodeObject:self.name forKey:@"name"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
//decode properties, other class vars
self.name = [decoder decodeObjectForKey:@"name"];
}
return self;
}
Ensuite, créez objet de classe CustomObject et stocker dans NSUserDefaults
Stocké votre objet comme celui-ci
CustomObject *object =[CustomObject new];
object.name = @"test";
NSMutableArray *arr = [[NSMutableArray alloc]init];
[arr addObject:object];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:arr];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedObject forKey:@"storeObject"];
[defaults synchronize];
obtenir objet personnalisé de NSUserDefaults comme celui-ci
NSData *storedEncodedObject = [defaults objectForKey:@"storeObject"];
NSArray *arrStoreObject = [NSKeyedUnarchiver unarchiveObjectWithData:storedEncodedObject];
for (int i=0; i<arrStoreObject.count; i++)
{
CustomObject *storedObject = [arrStoreObject objectAtIndex:i];
NSLog(@"%@",storedObject.name);
}
Cela ne fonctionnera pas à moins que votre classe implémente le protocole
Pl facilité ne pas ajouter la [même réponse à plusieurs questions] (http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-ad??da-duplicate-answer-to-several-questions). Répondez le meilleur et marquez le reste comme doublons, une fois que vous gagnez assez de réputation. Si ce n'est pas un doublon, adaptez le message à la question. [Dupliquer Answere ici] (https://stackoverflow.com/questions/43222681/store-custom-objects-in-nsuserdefaults/43223489#43223489) –
Swift 3
// set a value for key
let encodedData = NSKeyedArchiver.archivedData(withRootObject: #YOUR OBJECT#)
UserDefaults.standard.set(encodedData, forKey: #YOUR KEY#)
// retrieving a value for a key
if let data = UserDefaults.standard.data(forKey: #YOUR KEY#),
let obj = NSKeyedUnarchiver.unarchiveObject(with: data) as? #YOUR OBJECT# {
} else {
print("There is an issue")
}
même approche et une bien meilleure explication est ici: https://stackoverflow.com/a/29987303/5881884 – DevB2F
double possible de [Comment stocker des objets personnalisés NSUserDefaults] (http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-in-nsuserdefaults) – Rikh
Copie possible de [Stocker les objets personnalisés dans NSUserDefaults] (http://stackoverflow.com/questions/43222681/store-custom-objects-in-nsuserdefaults) –