2009-04-25 15 views
2

Dans mon application, j'ai un simple fichier ASCII qui stocke des informations de configuration et d'autres petites informations qu'il utilise et change. Je veux copier ce fichier sur l'iPhone avec l'application.iPhone App: Où puis-je mettre un fichier de configuration?

1) S'il vous plaît dites-moi où je devrais mettre ce fichier (config.txt) dans xcode. Devrais-je le mettre sous Ressources?

2) Comment vais-je y accéder dans l'iPhone? Puis-je utiliser

str = [NSString stringWithContentsOfFile:@"config.txt"] 

ou dois-je utiliser un chemin plus complet; Si oui, qu'est-ce que c'est?

Répondre

9

Vous devez utiliser NSUserDefaults pour stocker les paramètres utilisateur, si l'application peut les modifier. La documentation est here.

Les paramètres sont stockés dans un fichier plist, afin que vous puissiez stocker NSDictionary instances, NSArray instances, etc.

Si vous souhaitez pré-remplir votre NSUserDefaults avec certains paramètres, vous pouvez le faire avec un code comme celui-ci:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"defaults" ofType:@"plist"]; 
NSDictionary *defaultsDict = [NSDictionary dictionaryWithContentsOfFile:filePath]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict]; 

Vous devez mettre un fichier defaults.plist sur votre dossier Ressources avec les paramètres par défaut et utilisez le code ci-dessus. Je cours ce code à partir de la méthode +(void)initialize AppDelegate, mais vous pouvez choisir un autre endroit pour l'appeler.

+0

Je veux stocker certaines options par défaut à cueillis par l'utilisateur. Il peut ajouter plus d'options à son goût pendant qu'il utilise l'application. par exemple. pour une application d'observation des oiseaux, les options initiales pourraient être "colombe", "moineau", etc. L'utilisateur peut en ajouter d'autres comme "aigle". La liste peut devenir grande (100 entrées disent). NSUserDefaults est-il toujours une bonne option? – euphoria83

+1

Je vous recommande d'essayer de charger de gros fichiers plist sur l'appareil (pas sur le simulateur) pour tester la performance. Si vous avez besoin de plus de performances, vous pouvez vouloir vérifier SQLite et stocker les informations sur une base de données à la place. – pgb

+0

Comment puis-je avoir un fichier avec des paires clé-valeur préexistantes et y accéder en utilisant NSUserDefaults? – euphoria83

1

Vous pouvez le mettre dans Ressources, oui. Pour obtenir le fichier, puis, vous pouvez simplement utiliser:

[[NSBundle mainBundle] pathForResource:@"config" ofType:@"txt" inDirectory:@""]] 

Puis-je suggérer NSUserDefaults pour vos paramètres, cependant? Cela vous épargnera beaucoup de difficultés à les lire et à les écrire.

0

Si nsuserdefaults ne répond pas à vos besoins, vous pouvez stocker les informations de configuration dans un fichier du répertoire Documents. Si le fichier n'existe pas au démarrage, lisez la version que vous avez dans Ressources.

1

Et si vous voulez récupérer les NSUserDefaults, vous pouvez effectuer les opérations suivantes:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// getting a NSString 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 

// getting a NSInteger 
NSInteger myInt = [prefs integerForKey:@"integerKey"]; 

// getting a Float 
float myFloat = [prefs floatForKey:@"floatKey"];