我有一个属性列表,它在根目录下有一个字典,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.(单个对象)。
我无法弄清楚为什么会这样。 任何帮助表示赞赏。
答案 0 :(得分:1)
我不在Mac上我现在正在进行iOS开发,但从我记得你不想使用dictionaryWithContentsOfFile
,你想要使用propertyListWithData:options:format:error:
,否则它不会正确加载嵌套属性。可以将该消息的结果分配给NSDictionary
对象,并按正常方式进行访问。 (说到这一点,Xcode的最新版本支持更简洁的索引和密钥访问,例如oneCableSizeDataArray[0]
和tableDict["#14"]
。)