如何使用iPhone进行Plist阵列显示?

时间:2011-09-20 09:23:27

标签: iphone arrays cocoa-touch plist

对于样本Plist显示代码我看起来很高和很低,似乎找不到任何我想做的事情。我知道这不会太难,但我是Plists的新手。

我在Plist中有以下数组,我似乎无法获得显示信息的正确命令。我在Plist设置中做错了吗?它编译得很好但没有数据进入iPhone模拟器。

显示信息的正常方式是什么?

我有条件设置:

如果条件一     然后显示“+ 0 + 1”
否则
        显示“+ 0 + 2”


*我希望它显示的是:
*“这是一个” *“这是两个”
*“这是三个”
*否则显示
*“555-555-1234”
*“555-555-0000”
*“555-555-5555”


  • MY PLIST如下: *
    • 键类型值 *根词典(2项)
  • * + 0 + 1阵列(3项)
  • *项目0字符串“这是一个”
  • *项目1字符串“这是两个”
  • *第2项字符串“这是三个”
  • * + 0 + 2阵列(3项)
  • * Item 0 String“555-555-1234”
  • *项目1字符串“555-555-0000”
  • *第2项字符串“555-555-5555” *

// read property list into memory as an NSData object
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSString *errorDesc = nil;
NSPropertyListFormat format;
// convert static property list into dictionary object
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];

// assign values
self.item1 = [temp objectForKey:@"name1"];
self.item2 = [NSMutableArray arrayWithArray:[temp objectForKey:@"name2"]];
// display values
bigCheese.text = disp1;
numberZero.text = [disp2 objectAtIndex:0];
numberOne.text = [disp2 objectAtIndex:1];
numberTwo.text = [disp2 objectAtIndex:2];

2 个答案:

答案 0 :(得分:0)

尝试使用:

NSString *file = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:file]; 
NSArray *array = [dict objectForKey:@"Array"]; NSLog(@"%@", array);

这很简单,所以做错事的机会就少了。

答案 1 :(得分:0)

获得字典后,获取该字典的所有值。在您的情况下,从temp字典中获取所有值。它应该返回一个包含两个数组的数组。

NSArray * valueArray = [temp allValues];

现在您有两个阵列,如果您想访问“555-555-5555”,请执行以下操作:

[[valuesArray objectAtIndex:1] objectAtIndex:2];

或者如果你确定“name1”和“name2”是你词典的键,你可以这样访问:

[[temp objectForKey:@“name1”] objectAtIndex:2];

获得此信息后,您可以决定如何显示该信息。我建议你去看看,看看是否先创建了字典和数组对象。不确定您发布的示例代码中的disp1和disp2是什么..