【问题标题】:How can I retrieve string from plist?如何从 plist 中检索字符串?
【发布时间】:2013-03-26 01:40:44
【问题描述】:

我在 xcode 中有一个名为“config.plist” 的 plist,我试图检索寄存器 url(键 :reg)但是当我打印该结果时它显示空值?

这是我检索字符串的代码..请参考我的 plist 结构的图像。

NSMutableURLRequest *request =[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString: [[_config objectForKey:@"URL"] objectForKey:@"reg"]]];

【问题讨论】:

  • 你的 plist 文件存储在哪里?
  • 更新:它在我的 xcode 中
  • 什么是 Xcode?那是一个 IDE,根本不存储任何 plist。
  • 如果你说它在你的 xcode 中,我认为你将它添加为资源......
  • 请在聚光灯下搜索config.plist,并将完整路径发送给我们。

标签: ios nsarray plist nsdictionary


【解决方案1】:
NSString *plist=[[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSDictionary *dict=[[NSDictionary alloc] initWithContentsOfFile:plist];
NSString *stringValue=dict[@"URL"][@"reg"];

编辑:了解以下内容非常重要:

上面dict本身就是objectForKey:@"Root"

而我/我们试图通过[@"Root"][@"URL"][@"reg"] 找到不存在的。

因此,为了便于命名约定(它存储的内容),它应该是:

NSString *plist=[[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSDictionary *rootDict=[[NSDictionary alloc] initWithContentsOfFile:plist];
NSString *stringValue=dict[@"URL"][@"reg"];

或者,甚至

NSString *plist=[[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSString *stringValue=[[NSDictionary alloc] initWithContentsOfFile:plist][@"URL"][@"reg"];

【讨论】:

  • 我看到了您的更新...按照 Bhargavi 在 George 的回答中建议的更改路径
  • 因为你注释它在documents目录下,看最上面的编辑
  • 通常您将 plist 存储在 mainBundle 中,因此我们仅以这种方式解决。
  • @Viral 嘿,这是objective -c 的语法:)
  • @AnoopVaidya 您的回答没有问题,Akh 试图对其进行无效编辑。
【解决方案2】:

试试

NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"config.plist"]; 
NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
NSString *result = [[[dictionary objectForKey:@"Root"] objectForKey:@"URL"]objectForKey:@"reg"];

编辑资源:

NSString *path = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];

【讨论】:

  • 如果存储在文档中,看看 Bhargavi 是如何编辑我的答案的
  • @George 请再次提醒路径。他在其 mainBundle 中不在 doc dir 中
【解决方案3】:

试试这个代码

NSString *plistFilePath=[[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSDictionary *urlDictionary=[[NSDictionary alloc] initWithContentsOfFile:plistFilePath];
NSString *urlString=[[urlDictionary objectForKey:@"URL"] valueForKey:@"reg"];

【讨论】:

    【解决方案4】:
        NSString *plist=[[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
        NSLog(@"path%@",plist);
        NSDictionary *dict=[[NSDictionary alloc] initWithContentsOfFile:plist];
        NSLog(@"d%@",dict);
        NSString *stringValue=[[dict objectForKey:@"URL"] valueForKey:@"reg"];
    

    这东西对我有用..感谢您的所有帮助

    【讨论】:

    • 如果发送没有问题,请将您的 plist 文件邮寄给我。在个人资料中找到我的邮件 ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2011-03-24
    • 2017-09-16
    相关资源
    最近更新 更多