J'ai enregistré un nsmutableArray dans un NSUserDefaults. Dans le cas suivant, il semble que tous les éléments du tableau sont égaux à 0, même si dans ce cas, la position 1 et la position 5 doivent avoir 1 comme valeur au lieu de 0. Je sais que les éléments NSUserDefaults sont immuables mais ... J'ai ajouté cette variable mutableCopy lors de l'extraction de la valeur.NSUserDefaults ne peut pas mettre à jour un tableau nsmutable
Où est-ce que je me trompe?
//create array
NSMutableArray *objArray = [[NSMutableArray alloc] init];
for (int i=0; i< 100;i++) [objArray addObject:@"0"];
[objArray replaceObjectAtIndex:1 withObject:@"1"];
[[NSUserDefaults standardUserDefaults] setObject:objArray forKey:name];
// update
elementPosition = 5;
NSMutableArray *objArray = [[NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:name]] mutableCopy];
[objArray replaceObjectAtIndex:elementPosition withObject:@"1"];
//check the array
NSMutableArray *objArray = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:nameFile]];
BOOL displayContent = true;
for (int i=0; i<[objArray count];i++)
{
if ([[objArray objectAtIndex:i] isEqualToString:@"0"])
{
displayContent = false;
}
}
Pourquoi ai-je besoin d'utiliser cette synchronisation? J'ai fait quelques tests et il semble que le tableau NUserDefault est sauvegardé sans cette synchronisation. Et deuxièmement retarder cette troisième erreur, j'ai besoin d'une valeur de bool pour être faux dans le cas où il y a un objet dans le tableau pour lequel la valeur est 0 au lieu de 1. –
La méthode de synchronisation est invoquée automatiquement à intervalles périodiques. Mais nous voulons enregistrer les données immédiatement et ne pas attendre la synchronisation automatique (par exemple, si votre application est sur le point de sortir) ou si vous souhaitez mettre à jour les valeurs par défaut de l'utilisateur sur le disque même si vous n'avez effectué aucune modification. –
Cochez cette case: https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/nsuserdefaults_class/reference/reference.html#//apple_ref/occ/instm/NSUserDefaults/synchronize –