我遇到了NSdictionary
和的问题NSArray
。我想要完成的是UILabel
在一个循环中使用不同的数据重复自己。数据来自一个 xml 文件。我正在正确解析数据,我让它显示使用:
lblAffected = [[[outageDict objectForKey:@"Outage" ]objectForKey:@"outagenum" ]objectForKey:@"text" ];
当我有多个与一次中断相关联的中断号时,我的问题就出现了。以下是我目前拥有的。
if (mapCoordinateIsInPolygon) {
int outageIndex = [poly.title intValue];
NSDictionary *outageDict = [sections objectAtIndex:outageIndex];
//NSLog(@"hit, outageDict = %@", outageDict);
for (NSDictionary *data in outageDict){
NSArray *outageData = [outageDict objectForKey:@"Outage" ];
NSMutableArray *outageInfo = [[NSMutableArray alloc]init];
for(NSDictionary *outa in outageData){
[outageInfo addObject:[[outa objectForKey:@"outagenum"] objectForKey:@"text"]];
NSLog(@"ouatage %@", outageInfo);
}
int add = 0;
NSLog(@"ouatage %i", [outageInfo count]);
for (int i=0; i < [outageInfo count]; i++){
add = add+20;
lblAffected.frame = CGRectMake(130,add,320, 60);
NSLog(@"added : %i",add);
lblAffected.backgroundColor = [UIColor clearColor];
lblAffected.textColor = [UIColor redColor];
lblAffected.font = [UIFont fontWithName:@"Helvetica" size: 13.0];
lblAffected.lineBreakMode = UILineBreakModeWordWrap;
lblAffected.numberOfLines = 1;
lblAffected.text = outageInfo[i];
NSLog(@"outage Ifo %@",outageInfo[i]);
[headerView addSubview:lblAffected];
}
}
需要发生的是,一旦我从 outageDict 获取数据,它就需要存储在标签内并显示在 subView 上。如果有多个中断编号,则标签需要复制自身,以显示彼此下方 20 像素的所有中断编号。我最终会将它放在一个滚动视图中,但要知道我只是想解决这个问题。
现在我的问题是我在字典和数组上做错了什么?当我触摸地图上的多边形视图时出现多次中断,它会显示在日志文件中,但是当我点击一个只有一次中断时,它会崩溃。我会以错误的方式解决这个问题吗?错误消息发生在
[outageInfo addObject:[[outa objectForKey:@"outagenum"] objectForKey:@"text"]];
并指出
-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6d2b160
任何帮助,将不胜感激。