2010-02-22 19 views
0

J'ai une application iPhone qui stocke certains paramètres en utilisant NSUserDefault standardUserDefaults.Comment migrer NSUserDefaults dans une nouvelle version?

Lorsque j'ajoute de nouvelles fonctionnalités à l'application, j'ai besoin d'ajouter de nouveaux paramètres par défaut et je dois donc migrer/mettre à niveau le NSUserDefaults. Pour l'instant, je juste stocker le numéro de version et vérifier cela lorsque l'application est lancée. Il est rapidement devenu très salissant car je dois ajouter beaucoup de si déclarations. Je ne peux pas supposer que l'utilisateur est juste mise à niveau de la version précédente, mais peut-être même quelques versions avant. J'aime la façon dont CoreData semble gérer la migration des changements de table, mais je veux fournir la compatibilité 2.2.1 SDK et bien sûr CoreData n'est pas la même chose que NSUserDefaults.

Des suggestions ou des bonnes pratiques?

Répondre

2

Hmm ... Je ne "mettrais pas à jour" les valeurs par défaut de l'utilisateur de cette façon, mais interroger NSUserDefaults comme d'habitude, seulement si la valeur par défaut n'est pas définie (objectForKey renverra zéro dans ce cas), utilisez une valeur par défaut (qui peut ensuite être réécrit à l'utilisateur par défaut pour gagner du temps la prochaine fois). Puisque vous devrez le faire chaque fois qu'une "nouvelle" valeur par défaut (c'est-à-dire qui n'existait pas dans la version 1.0) est lue, je conseille de faire une classe/fichier wrapper qui le fait, de cette façon le code n'est écrit qu'une fois chaque "nouveau" par défaut.

En outre, alors que la question/problème est différent, this answer fonctionne tout aussi bien dans votre cas.