Pourquoi utiliser UserDefaults ? Nous avons parfois besoin de sauvegarder des petites quantités de données dans notre application. Comme des paramètres, une chaîne de texte, un tableau de données sans passer par Core Data. Elle prend en charge les types Bool, Int, String, Data, Array, ou Dictionnary.

Stocker des données en Swift

Sauvegarde d’une préférence (String)

let mypassword = @"monmotdepasse"
savePreference(title: password", andSecond: mypassword)

// functions.swift
func savePreference(title: String, andSecond value: String)
{
    UserDefaults.standard.set(value, forKey: title)
}

### Lecture d’une préférence (String)
let mypassword = readPreference(title: "password")

// functions.swift
func readPreference(title: String) -> String
{
    if ((UserDefaults.standard.object(forKey: title)) != nil) {
        return UserDefaults.standard.string(forKey: title)!
    }
    return ""
}

Sauvegarde d’une préférence (Any)

var myarray = ["a", "b", "c"]
savePreference(title: montableau", andSecond: myarray)

func savePreferenceArray(title: String, andSecond value: [Any])
{
    UserDefaults.standard.set(value, forKey: title)
}

Lecture d’une préférence (Any)

var montableau = savePreference(title: "montableau")

func readPreferenceArray(title: String) -> [Any]
{
    let object = [Any]()
    if ((UserDefaults.standard.object(forKey: title)) != nil) {
        return UserDefaults.standard.stringArray(forKey: title) ?? [String]()
    }
    return object
}

Stocker des données en Objective-C

Sauvegarde d’une préférence (NSString)

NSString *mypassword = @"monmotdepasse";
[Functions savePreference:@"password" andSecond:mypassword];

// Functions.h
+ (void)savePreference:(NSString *)title andSecond:(NSString *)value;

// Functions.m
+ (void)savePreference:(NSString *)title andSecond:(NSString *)value
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:value forKey:title];
}

Lecture d’une préférence (NSString)

NSString *mypassword = [Functions readPreference:@"password"];

// Functions.h
+ (NSString *)readPreference:(NSString *)title;

// Functions.m
+ (NSString *)readPreference:(NSString *)title
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    return [prefs stringForKey:title];
}

Sauvegarde d’une préférence (NSMutableArray)

NSMutableArray *myarray = [NSMutableArray arrayWithCapacity:1];
[array addObject:@"word 1"];
[array addObject:@"word 2 »];

[Functions savePreference:@"montableau" andSecond:myarray];

// Functions.h
+ (void)savePreferenceArray:(NSString *)title andSecond:(NSMutableArray *)value;

// Functions.m
+ (void)savePreferenceArray:(NSString *)title andSecond:(NSMutableArray *)value
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:value forKey:title];
}

Lecture d’une préférence (NSMutableArray)

NSMutableArray *myarray = [Functions readPreference:@"montableau"];

// Functions.h
+ (NSArray *)readPreferenceArray:(NSString *)title;

// Functions.m
+ (NSArray *)readPreferenceArray:(NSString *)title
{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    return [prefs arrayForKey:title];
}