iOS Application Configuration File

放肆的年华 提交于 2019-12-02 17:28:44
Rafael Steil

You can create a property list file (there is a template for that in XCode, just to to File -> New file and choose there), so you will have something like "settings.plist", or anything like that. You can think of a plist as being a key => value config file, with the difference that you can also hold arrays and dictionaries, besides plain text as value.

Use NSBundle to load the file in your app, like

NSString *path = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];
NSDictionary *settings = [[NSDictionary alloc] initWithContentsOfFile:path];

You can then access your keys as a regular dictionary. Just don't forget to [release] it after ;).

Simon

For small bits of data like a connection string, I'd use NSUserDefaults.

When you want to save your connection string, you'd do this:

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

When you want to load it, you'd do this:

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

If you're just storing a relatively simple set of configuration stuff, you can simply use NSDictionary's serialization methods (I don't know how to link to the methods directory in the class 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];

Since I don't know how familiar you are with objective-c, I'll also note:

In iOs every App has own sandbox which will be availble for that app only. So If you want that file to be read only access save it to Application Bundle. else save to Application folder.

you Can not access Application folder directly So If you want to save your file to that folder you have to do it programmatically.

iOS Application Configuration File in Swift with iOS 8.3:

    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)

Updated for Swift 3 Xcode 8

Add a new property list to your project named "Sample.plist". Then see the following example.

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

I use property lists for storing small pieces of data - have a look here on how to use them:

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

rmeador

I realize I'm late to the party, but after finding this stack overflow I was disheartened at the accepted answer, so I created a pod to solve it! This is based on the idea from @RafaelSteil's answer, but it has a simpler interface, caches the loaded config data, and it supports pods providing their own defaults which can be overridden by the main app. I hope it helps someone.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!