web-dev-qa-db-fra.com

Fichier de configuration d'application iOS

Dans une application C # j'ai toujours utilisé un app.config fichier pour enregistrer des données pour mon application à charger en cas de besoin (par exemple, chaîne de connexion).

Quelle est la meilleure façon d'enregistrer des informations comme celle-ci dans une application iOS?

33
António

Pour de petits bits de données comme une chaîne de connexion, j'utiliserais NSUserDefaults .

Lorsque vous souhaitez enregistrer votre chaîne de connexion, vous devez procéder comme suit:

[[NSUserDefaults standardUserDefaults] setObject:myConnectionString 
                                          forKey:@"connectionString"];

Lorsque vous voulez le charger, vous feriez ceci:

myConnectionString = [[NSUserDefaults standardUserDefaults] 
                          stringForKey:@"connectionString"];
10
Simon

Si vous stockez simplement un ensemble relativement simple de choses de configuration, vous pouvez simplement utiliser les méthodes de sérialisation de NSDictionary (je ne sais pas comment créer un lien vers le répertoire des méthodes dans la classe doc):

NSString *settingsPath = [@"~/pathtoconfig.plist" stringByExpandingTildeInPath];

NSMutableDictionary *settings = [NSMutableDictionary dictionary];
if([[NSFileManager defaultManager] fileExistsAtPath:settingsPath]){
    settings = [NSMutableDictionary dictionaryWithContentsOfFile:settingsPath];
}

// writing settings
[settings writeToFile:settingsPath atomically:YES];

Puisque je ne sais pas à quel point vous connaissez l'objectif-c, je noterai également:

4
Jeff

fichier de configuration d'application iOS dans Swift avec iOS 8.:

    let path: String = NSBundle.mainBundle().pathForResource("Info", ofType: "plist")!
    let nsDictionaryInfoPlist: NSDictionary = NSDictionary(contentsOfFile: path)!

    // Usage example: Google Maps iOS SDK/API Configuration.
    GMSServices.provideAPIKey(nsDictionaryInfoPlist.objectForKey("GoogleMapsiOSAPIKey") as! String)
2
King-Wizard

Mis à jour pour Swift 3 Xcode 8

Ajoutez une nouvelle liste de propriétés à votre projet nommée "Sample.plist". Consultez ensuite l'exemple suivant.

    let path: String = Bundle.main.path(forResource: "Sample", ofType: "plist")!
    let sampleConf: NSDictionary = NSDictionary(contentsOfFile: path)!
    print(sampleConf.object(forKey: "test") as! String)
2
beatsbears

Dans iOs, chaque application possède son propre bac à sable qui ne sera disponible que pour cette application. Donc, si vous voulez que ce fichier soit en lecture seule, enregistrez-le dans le bundle d'applications. sinon enregistrez-le dans le dossier Application.

vous ne pouvez pas accéder directement au dossier Application. Donc, si vous souhaitez enregistrer votre fichier dans ce dossier, vous devez le faire par programme.

2
iOSPawan

J'utilise les listes de propriétés pour stocker de petites données - jetez un œil ici sur la façon de les utiliser:

http://iphoneincubator.com/blog/tag/nspropertylistserialization

1
TheEye

Je me rends compte que je suis en retard à la fête, mais après avoir trouvé ce débordement de pile, j'étais découragé par la réponse acceptée, alors j'ai créé un pod pour le résoudre! Ceci est basé sur l'idée de @ RafaelSteil's answer , mais il a une interface plus simple, met en cache les données de configuration chargées et prend en charge les pods fournissant leurs propres valeurs par défaut qui peuvent être remplacées par l'application principale. J'espère que ça aide quelqu'un.

0
rmeador