【问题标题】:iOS - Issue with reading from a plistiOS - 从 plist 中读取的问题
【发布时间】:2014-01-15 00:06:55
【问题描述】:

我在阅读我似乎无法理解的 plist 时遇到问题。

我的 plist 列表看起来像这样(注意,为了示例,我已对其进行了简化):

然后我正在阅读这样的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"ContactDetails" ofType:@"plist"];
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSArray* allmyKeys = [myDictionary allKeysForObject:@"Name1"];

任何想法 - 我一直面临的问题是 allmyKeys 显示为包含 0 个对象。在调试时 myDictionary 已正确填充,因此不确定为什么它不起作用。

非常感谢

【问题讨论】:

  • 对不起它的名字1 - 我刚刚在描述中写错了 - 已经更正了。
  • 你想检索什么?如果您想要@"Name1" 的所有键(@"Address1"@"Address2" 等),则为[dictionary[@"Name1"] allKeys]。或者,如果您要查找与@"Name1" 键关联的整个字典对象,则应为dictionary[@"Name1"][myDictionary allKeysForObject:@"Name1"] 查找匹配 @"Name1" 的值,而不是匹配 @"Name1" 的键。

标签: ios plist


【解决方案1】:

问题出在这一行:

NSArray* allmyKeys = [myDictionary allKeysForObject:@"Name1"]; 

@"Name1" 是字典中的,而不是值。即使它是一个值,字符串@"Name1"myDictionary 中具有相同值的字符串也是不同的对象,因此此调用不会达到您的预期。

你可能想通过这样做来访问字典

NSDictionary *userDetails = myDictionary[@"Name1"];

【讨论】:

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