iOS应用程序配置文件

时间:2011-11-18 11:57:24

标签: ios configuration-files

C#应用程序中,我总是使用app.config文件为我的应用程序保存一些数据,以便在需要时加载(例如连接字符串)。

在iOS应用程序中保存此类信息的最佳方法是什么?

8 个答案:

答案 0 :(得分:57)

你可以创建一个属性列表文件(在XCode中有一个模板,只有文件 - >新文件并选择那里),所以你会有像“settings.plist”这样的东西,或类似的东西。您可以将plist视为键=>值配置文件,区别在于您还可以保存数组和字典,除了纯文本作为值。

使用NSBundle在您的应用中加载文件,例如

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

然后,您可以将您的密钥作为常规字典访问。只是不要忘记[释放]之后;)。

答案 1 :(得分:10)

对于像连接字符串这样的小数据,我会使用NSUserDefaults

如果要保存连接字符串,请执行以下操作:

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

当你想加载它时,你会这样做:

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

答案 2 :(得分:4)

如果你只是存储一组相对简单的配置文件,你可以简单地使用NSDictionary的序列化方法(我不知道如何链接到类doc中的methods目录): / p>

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];

由于我不知道你对objective-c有多熟悉,我还会注意到:

答案 3 :(得分:2)

在iOs中,每个应用程序都有自己的沙箱,仅适用于该应用程序。因此,如果您希望该文件只读,请将其保存到Application Bundle。否则保存到Application文件夹。

您无法直接访问Application文件夹所以如果您想将文件保存到该文件夹​​,则必须以编程方式进行。

答案 4 :(得分:2)

iOS应用配置文件 Swift 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)

答案 5 :(得分:2)

针对Swift 3 Xcode 8进行了更新

将新属性列表添加到名为" Sample.plist"的项目中。然后看下面的例子。

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

答案 6 :(得分:1)

我使用属性列表来存储小块数据 - 请查看如何使用它们:

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

答案 7 :(得分:0)

我意识到我迟到了,但是在发现这个堆栈溢出后,我对接受的答案感到沮丧,所以我created a pod来解决它!这是基于@ RafaelSteil的answer的想法,但它有一个更简单的接口,缓存加载的配置数据,它支持pods提供自己的默认值,可以被主应用程序覆盖。我希望它有所帮助。