读取属性列表时出错

时间:2013-06-13 19:27:27

标签: objective-c arrays properties

我有一个属性列表,它在根目录下有一个字典,21个数组作为行,按相应的键排序。 每个键的数组(值)为8个字符串。 像这样:

  Root                     Dictionary       (21 items)
  "#14"                     Array           (8 items)   
  "#12"                     Array           (8 items)
    Item 0                  String           0.164
    Item 1                  String           0.123
    item 2                  String           0.211

....等等

在我的实现文件中,我有:

  

` - (void)loadTable9NECWithBundle :( NSBundle *)包      {

   bundle = [NSBundle mainBundle] ;
    if (bundle != nil)
    {
  /* Read the cable table data from the disk in a dictionary of arrays. Each array contains >       only one cable size data. */
      NSString *CableData = [bundle pathForResource:@"Table9-NEC" ofType:@"plist"];
       NSDictionary *tableDict = [NSDictionary dictionaryWithContentsOfFile:CableData];
       NSString *datos = nil;
       NSEnumerator *enumerator = [tableDict keyEnumerator];
       id key;
       while ((key = [enumerator nextObject]))
       {
       oneCableSizeDataArray = [[NSMutableArray alloc] initWithObjects:[tableDict >     valueForKey:key] ,nil];
       NSLog(@"key is %@ ", key);
          datos = [oneCableSizeDataArray objectAtIndex: 0 ];
           NSLog(@"value is %@ ", datos);

      }

控制台清楚地表明我可以正确地迭代所有键,但是数组oneCableSizeDataArray将值作为单个字符串获取,而不是像plist文件表示中那样的8字符串。这意味着[oneCableSizeDataArray count]返回1.(单个对象)。

我无法弄清楚为什么会这样。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我不在Mac上我现在正在进行iOS开发,但从我记得你不想使用dictionaryWithContentsOfFile,你想要使用propertyListWithData:options:format:error:,否则它不会正确加载嵌套属性。可以将该消息的结果分配给NSDictionary对象,并按正常方式进行访问。 (说到这一点,Xcode的最新版本支持更简洁的索引和密钥访问,例如oneCableSizeDataArray[0]tableDict["#14"]。)