我正在解析第三方提供商的XML数据。
它们包括我们每个团队所需的所有信息,除了他们的徽标。
我已将所有徽标导入到我的项目中。
有没有办法为每个团队添加徽标字段?
这是我的解析方法,效果很好
-(void) parseXML{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"apikeygoeshere"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *xmlString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *xml = [NSDictionary dictionaryWithXMLString:xmlString];
NSMutableArray *items = [xml objectForKey:@"TeamLeagueStanding"];
NSString *nullentry = @""; // custom code for specific reason
NSString *nullentry2 = @""; // custom code for a specific reason
[items insertObject:nullentry atIndex:0]; // custom code for a specific reason
[items insertObject:nullentry2 atIndex:1]; // custom code for a specific reason
[self setTableData:items];
}
这是我的cellForRowAtIndexPath方法,因为您将看到我的徽标是从我的代码中包含的数组中提取的,但如果位于第一位的团队降至第2位,则徽标将不会更改位置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StandingsIdent";
StandingsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *item = [tableData objectAtIndex:[indexPath row]];
if ([item isKindOfClass:[NSDictionary class]]) {
long row = [indexPath row];
cell.cellTeamName.text = [item objectForKey:@"Team"];;
cell.cellTeamLogo.image = [UIImage imageNamed:_teamLogos[row]];
cell.cellTeamPosition.text = _teamPosition[row];
cell.cellPlayed.text = [item objectForKey:@"Played"];
cell.cellWins.text = [item objectForKey:@"Won"];
cell.cellTies.text = [item objectForKey:@"Draw"];
cell.cellLoses.text = [item objectForKey:@"Lost"]; ;
cell.cellPoints.text = [item objectForKey:@"Points"];
cell.cellInfo.text = _infoLeague[row];
}
else {
}
}
是否有可能以某种方式将这些徽标添加到每个团队?所以当团队“x”移动时,徽标也会移动。
以下是解析后的xml数据结构:
{
Draw = 10;
"Goal_Difference" = "-17";
"Goals_Against" = 39;
"Goals_For" = 22;
Lost = 11;
NumberOfShots = 395;
Played = 25;
PlayedAtHome = 13;
PlayedAway = 12;
Points = 22;
RedCards = 5;
Team = Partick;
"Team_Id" = 561;
Won = 4;
YellowCards = 41;
}
谢谢;)
答案 0 :(得分:0)
您为每个团队收到NSDictionary
- 这是一个不可变对象,因此您无法更改它。但是,您可以创建一个可变副本(因此您将拥有NSMutableDictionary
)。
当你这样做时:
NSMutableArray *items = [xml objectForKey:@"TeamLeagueStanding"];
你实际上不太可能得到一个可变数组(尽管你可能)。但是,如果没有,你可以创建一个可变副本。
然后,遍历团队,创建字典的可变副本,添加徽标所需的键/值对,然后用更新的副本替换阵列中的原始条目。
或者,另一种方法:
将您的徽标存储在不同的词典中,其中键是团队名称(或唯一ID),值是徽标图像名称。然后,您可以使用_teamLogos[row]
代替_teamLogos[[item objectForKey:@"Team"]]
来获取图片名称。