如何在iOS中添加和获取.plist中的值

xzlaal3s  于 2022-12-15  发布在  iOS
关注(0)|答案(6)|浏览(146)

我正在实现一个基于Web服务的应用程序,因为我需要在.plist中添加一个字符串作为属性,并且我需要在代码中随时从.plist中获取值。

5ktev3wc

5ktev3wc1#

下面是一个代码示例:

NSString *path = [[NSBundle mainBundle] pathForResource: @"YourPLIST" ofType: @"plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path];
id obj = [dict objectForKey: @"YourKey"];
2jcobegt

2jcobegt2#

NSBundle* mainBundle = [NSBundle mainBundle]; 

x一个一个一个一个x一个一个二个x

7y4bm7vi

7y4bm7vi3#

NSURL *url = [[NSBundle mainBundle] URLForResource:@"YOURPLIST" withExtension:@"plist"];
NSArray *playDictionariesArray = [[NSArray alloc ] initWithContentsOfURL:url];

NSLog(@"Here is the Dict %@",playDictionariesArray);

也可以使用以下命令

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Sample.plist"];
bgtovc5b

bgtovc5b4#

从plist获取是非常简单的。

NSString *path = [[NSBundle mainBundle] pathForResource:@"SaveTags" ofType:@"plist"];
if (path) {
    NSDictionary *root = [NSDictionary dictionaryWithContentsOfFile:path];
}

如果你想在plist中添加一些东西,也许你可以在这里找到答案:如何在plist中写入数据?
但是如果你只想在你的应用程序中保存一些消息,NSUserDefaults是更好的方法。

mm5n2pyu

mm5n2pyu5#

你不能这样做。任何捆绑包无论是iOS还是Mac OS都是只读的,你只能读取它,你不能创建文件,写入或对捆绑包中的文件执行任何操作。这是苹果安全功能的一部分。你可以使用NSDocumentsDirectory写入和读取你的应用程序所需的内容

9wbgstp7

9wbgstp76#

斯威夫特

我知道这个问题是12年前问的,但这是第一个通过谷歌提出的问题。所以为了保存大家的时间,下面是如何在swift中做到这一点:

struct Config {

    // option 1
    static var apiRootURL: String {
        guard let value  = (Bundle.main.object(forInfoDictionaryKey: "BASE_URL") as? String), !value.isEmpty else {
            fatalError("Base URL not found in PLIST")
        }
        return value
    }

    // option 2
    static var databaseName: String {
        guard let value  = (Bundle.main.infoDictionary?["DB_NAME"] as? String), !value.isEmpty else {
            fatalError("DB NAME not found in PLIST")
        }
        return value
    }
    
}

请注意,这两个函数访问plist的方法略有不同,但实际上它们几乎是相同的。
理论上可能没有plist,因此infoDictionary是可选的,但在这种情况下,第一个方法也会返回一个意外的值,从而导致错误。
苹果指出的一个实际差异是:
参考Bundle.main.object(forInfoDictionaryKey: "BASE_URL")
与其他访问方法相比,首选使用此方法,因为它在键的本地化值可用时返回该值。

相关问题