向数组内的每个对象添加一个字段

时间:2014-02-04 14:49:58

标签: ios objective-c xml

我正在解析第三方提供商的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;

}

谢谢;)

1 个答案:

答案 0 :(得分:0)

您为每个团队收到NSDictionary - 这是一个不可变对象,因此您无法更改它。但是,您可以创建一个可变副本(因此您将拥有NSMutableDictionary)。

当你这样做时:

NSMutableArray *items = [xml objectForKey:@"TeamLeagueStanding"];

你实际上不太可能得到一个可变数组(尽管你可能)。但是,如果没有,你可以创建一个可变副本。

然后,遍历团队,创建字典的可变副本,添加徽标所需的键/值对,然后用更新的副本替换阵列中的原始条目。

或者,另一种方法:

将您的徽标存储在不同的词典中,其中键是团队名称(或唯一ID),值是徽标图像名称。然后,您可以使用_teamLogos[row]代替_teamLogos[[item objectForKey:@"Team"]]来获取图片名称。