iphone-在tableview中存储id/值对

iphone-在tableview中存储id/值对,iphone,objective-c,Iphone,Objective C,我有一个php文件,它返回带有id/值对的XML。 解析XML时,我创建了一个对象数组,每个对象都有一个id和一个值。 我现在要做的是将XML中的值添加到单元格文本中。还希望存储相应的ID,以便我可以在didSelectRowAtIndexPath方法中使用它。 我对iPhone非常陌生,所以这可能是显而易见的,对不起:) 当前我的CellForRowatineXpath方法如下所示: - (UITableViewCell *)tableView:(UITableView *)tableVie

我有一个php文件,它返回带有id/值对的XML。 解析XML时,我创建了一个对象数组,每个对象都有一个id和一个值。 我现在要做的是将XML中的值添加到单元格文本中。还希望存储相应的ID,以便我可以在didSelectRowAtIndexPath方法中使用它。 我对iPhone非常陌生,所以这可能是显而易见的,对不起:)

当前我的CellForRowatineXpath方法如下所示:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if(cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }
    int categoryIndex = [indexPath indexAtPosition: [indexPath length] -1];
    cell.textLabel.text = [[categories objectAtIndex: categoryIndex] objectForKey: @"CategoryName"];
    cell.accessoryType = UITableViewCellSelectionStyleBlue;
    return cell;

}
类别对象的定义如下:

category = [[NSMutableDictionary alloc] init];

[category setObject:currentID forKey:@"CategoryId"];
        [category setObject:currentName forKey:@"CategoryName"];

无需将实际ID添加到单元格中

如果将数组中的对象映射到UITableView 1:1,并且表中只有一个组,则只需使用IndexPath的行作为NSArray的索引,即可检索正确的条目

表的第一个单元格将有
行=>0
,数组中与其对应的对象也将有
0
索引

如果您有几个组,那么我假设您的数组将包含几个子数组来表示这一点。在这种情况下,使用IndexPath的group部分跳转到正确的数组,使用row部分跳转到正确的条目

备选方案:

如果出于某种原因必须在实际单元格中包含ID,则subcass
UITableViewCell
并向其界面添加单个NSNumber
cellID

确保将其保留在属性声明中并进行合成

然后,在CellForRowatineXpath()中,添加


通过这种方式,您可以稍后从
didSelectRowAtIndexPath
中的实际单元格中检索
单元格ID
,而无需将实际ID添加到单元格中

如果将数组中的对象映射到UITableView 1:1,并且表中只有一个组,则只需使用IndexPath的行作为NSArray的索引,即可检索正确的条目

表的第一个单元格将有
行=>0
,数组中与其对应的对象也将有
0
索引

如果您有几个组,那么我假设您的数组将包含几个子数组来表示这一点。在这种情况下,使用IndexPath的group部分跳转到正确的数组,使用row部分跳转到正确的条目

备选方案:

如果出于某种原因必须在实际单元格中包含ID,则subcass
UITableViewCell
并向其界面添加单个NSNumber
cellID

确保将其保留在属性声明中并进行合成

然后,在CellForRowatineXpath()中,添加


通过这种方式,您可以稍后从
didSelectRowAtIndexPath

中的实际单元格中检索
cellID

int categoryIndex = [indexPath indexAtPosition: [indexPath length] -1];
NSString *id = [[categories objectAtIndex:categoryIndex] objectForKey: @"CategoryId"];

在didSelect方法中使用此选项

int categoryIndex = [indexPath indexAtPosition: [indexPath length] -1];
NSString *id = [[categories objectAtIndex:categoryIndex] objectForKey: @"CategoryId"];

非常感谢。我实际上会选择子类化。谢谢!我实际上会选择子类化。