【问题标题】:Getting data from the Info plist从 Info plist 中获取数据
【发布时间】:2012-04-06 00:26:39
【问题描述】:

每当我想从 plist 文件中获取数据时,我都会使用以下代码:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"FILE_NAME" ofType:@"plist"];
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:filePath]; 

但现在我正在尝试从 Info plist 中读取数据,而 filePath 为 nil。是否有其他方法可以从 Info plist 中获取数据?

【问题讨论】:

标签: objective-c ios xcode ios5


【解决方案1】:

来自我较早的SO 答案。您项目的 info.plist 中的属性可以通过以下方式直接访问...

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

您的 filePath 为 nil 仅仅是因为它找不到文件 - 检查拼写并检查您尝试读取的文件是否实际上在包中等。

【讨论】:

  • 我能够使用 [NSBundle mainBundle].infoDictionary 获取 plist。 info plist 不在目标的 Copy Bundle Resources 列表中。信息列表是否存储在其他地方?
  • Swift 版本如果有人需要它Bundle.main.object(forInfoDictionaryKey: "key_name")
【解决方案2】:

我认为没有其他方法(除非它是 info.plist 文件,然后看 Damo 的评论),而是我会专注于找出为什么 filePath 为 nil,也许 plist 文件不再在 target>build 下阶段>复制捆绑资源?

【讨论】:

  • 我能够使用 [NSBundle mainBundle].infoDictionary 获取 plist。信息 plist 不在 Copy Bundle Resources 列表中。我猜信息列表有什么特别之处?
  • 很好发现 - 我从来没有想过,但在检查我当前的项目时,info.plist 也未选中复制
【解决方案3】:

替换

[[NSBundle mainBundle] pathForResource:@"FILE_NAME" ofType:@"plist"]

[[NSBundle mainBundle] pathForResource: @"Info" ofType: @"plist"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多