检索XML数据时,uitableview的numberOfRowsInSection返回类型是什么?

检索XML数据时,uitableview的numberOfRowsInSection返回类型是什么?,uitableview,nsmutablearray,nsarray,tbxml,Uitableview,Nsmutablearray,Nsarray,Tbxml,我有一个名为records的NSMutableArray和一个NSArray 现在,我正在使用TBXML解析器检索一个XML属性及其值,并将属性值插入NSArray 此NSArray是记录的对象 当我想在tableview单元格中显示XML数据的值时,numberOfRowsInstruction是什么 这是我的数据检索过程 [records addObject:[NSArray arrayWithObjects: [TBXML textForElement:id], [TBXM

我有一个名为
records
NSMutableArray
和一个
NSArray

  • 现在,我正在使用
    TBXML解析器
    检索一个XML属性及其值,并将属性值插入
    NSArray

  • NSArray
    记录的对象

  • 当我想在tableview单元格中显示XML数据的值时,
    numberOfRowsInstruction
    是什么

    这是我的数据检索过程

    [records addObject:[NSArray arrayWithObjects:
        [TBXML textForElement:id],
        [TBXML textForElement:productNumber],
        [TBXML textForElement:name],
        [TBXML textForElement:availableStock],
        [TBXML textForElement:image],
        [TBXML textForElement:quantityOrderMin],
        [TBXML textForElement:dateCreated],
        [TBXML textForElement:dateUpdated],nil]];
    
    我的XML数据是

    <ProductData HASH="21106941">
        <id>1</id>
        <productNumber>a91cc0f4c7</productNumber>
        <name>Product 1</name>
        <seoTitle>product-1</seoTitle>
        <viewCount>0</viewCount>
        <availableStock>100.0</availableStock>
        <lowStock>0.0</lowStock>
        <image>5e928bbae358c93caedf6115fa7d178b.jpg</image>
        <quantityOrderMax>20.0</quantityOrderMax>
        <dateCreated>2011-10-06T16:08:45</dateCreated>
    </ProductData>
    <ProductData HASH="409555632">
        <id>2</id>
        <productNumber>d8287e2e51</productNumber>
        <name>Product 2</name>
        <seoTitle>product-2</seoTitle>
        <description>
        <p>Lorem ipsum dolor sit amet, consectetue...</p>
        </description>
        <viewCount>0</viewCount>
        <availableStock>100.0</availableStock>
        <image>8bbd8dfff3cdd28285d07810a4fe7c32.jpg</image>
        <quantityOrderMin>1.0</quantityOrderMin>
        <dateCreated>2011-10-06T16:08:45</dateCreated>
    </ProductData>
    

    如何解决此问题?

    有两种方法解决此问题

  • 正确的方法是查看有关解析的信息。这显示了如何从每个
    ProductData
    元素条目中解析每个属性

  • 蛮力方法(我不会这么做)是通过“记录”数组进行解析,如下所示:

    @"<id>1</id>",@"<productNumber>a91cc0f4c7</productNumber>",@"<name>Product 1</name>",@"<seoTitle>product-1</seoTitle>",@"<viewCount>0</viewCount>",
    @"<availableStock>100.0</availableStock>",@"<lowStock>0.0</lowStock>",@"<image>5e928bbae358c93caedf6115fa7d178b.jpg</image>",
    @"<basePrice>10.0</basePrice>",@"<costPrice>0.0</costPrice>",@"<height>1.0</height>",@"<width>1.0</width>",@"<depth>1.0</depth>",@"<weight>2.0</weight>"
    
    “1”、“a91cc0f4c7”、“产品1”、“产品1”、“0”,
    @“100.0”、“0.0”、“5e928bbae358c93caedf6115fa7d178b.jpg”,
    @"10.0",@"0.0",@"1.0",@"1.0",@"1.0",@"2.0"
    
    等等,通过这个快速枚举

    for(NSString * elementText in records)
    {
        NSLog( @"%@", elementText );
        // and search for "<" and ">" and strip out the name and the value using
        // substring
    }
    
    for(记录中的NSString*elementText)
    {
    NSLog(@“%@”,elementText);
    //并搜索“”并使用
    //子串
    }
    

  • 请任何人尽快帮我你的问题不是很清楚,埃蒙。@MichaelDautermann:我现在编辑了我的问题,请帮助我。请再次检查我编辑的问题。我希望现在你能理解这个问题。你检查了我的问题了吗。如果你不清楚,请告诉我,然后我会再简要说明。现在请帮助我找到解决方案。如果我使用这个…
    开关(indexPath.row){case 0:cell.textLabel.text=[NSString stringWithFormat:@“%@”,[[records objectAtIndex:indexPath.row]objectAtIndex:0]];break;
    现在我的问题是如何在
    numberOfRowsInSection
    方法中给出行?
    for(NSString * elementText in records)
    {
        NSLog( @"%@", elementText );
        // and search for "<" and ">" and strip out the name and the value using
        // substring
    }
    
    #pragma mark tableview
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        int sectionCount = [records count];
        NSLog(@"section cout: %d",sectionCount);
        return sectionCount;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 1;
    }
    
    - (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];
            cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
            UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
            cell.accessoryView = imageView;
            cell.accessoryType = UITableViewCellSelectionStyleNone;
            tableView.separatorColor = [UIColor clearColor];
            tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    
            cellView = [[[UIView alloc] initWithFrame:CGRectMake(5,8,290, 120)] autorelease];
            cellView.backgroundColor = [UIColor clearColor];
            cellView.tag =10;
            [cell.contentView addSubview:cellView];
    
            imgView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 40, 48, 48)];
            imgView.image = [UIImage imageNamed:@"productbox.png"];
            imgView.layer.borderColor = [UIColor blackColor].CGColor;
            imgView.layer.borderWidth = 2.0;
            imgView.tag = 5;
            [cellView addSubview:imgView];
    
            CGRect idLabelRect = CGRectMake(65, 0, 190, 18);
            idLabel = [[[UILabel alloc] initWithFrame:idLabelRect] autorelease];
            idLabel.textAlignment = UITextAlignmentLeft;
            idLabel.textColor = [UIColor blackColor];
            idLabel.font = [UIFont systemFontOfSize:12];
            idLabel.backgroundColor = [UIColor clearColor];
            idLabel.layer.borderColor = [UIColor grayColor].CGColor;
            idLabel.tag = 0;
    
            CGRect statusRect = CGRectMake(65, 22, 190, 22);
            statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease];
            statusLabel.textAlignment = UITextAlignmentLeft;
            statusLabel.textColor = [UIColor blackColor];
            statusLabel.font = [UIFont systemFontOfSize:12];
            statusLabel.backgroundColor = [UIColor clearColor];
            statusLabel.layer.borderColor = [UIColor grayColor].CGColor;
            statusLabel.tag = 1;
    
            CGRect orderDateRect = CGRectMake(65, 48, 190, 22);
            orderDate = [[[UILabel alloc] initWithFrame:orderDateRect] autorelease];
            orderDate.textAlignment = UITextAlignmentLeft;
            orderDate.textColor = [UIColor blackColor];
            orderDate.font = [UIFont systemFontOfSize:12];
            orderDate.backgroundColor = [UIColor clearColor];
            orderDate.layer.borderColor = [UIColor grayColor].CGColor;
            orderDate.tag = 2;
    
            CGRect byRect = CGRectMake(65, 75, 190, 22);
            byLabel = [[[UILabel alloc] initWithFrame:byRect] autorelease];
            byLabel.textAlignment = UITextAlignmentLeft;
            byLabel.textColor = [UIColor blackColor];
            byLabel.font = [UIFont systemFontOfSize:12];
            byLabel.backgroundColor = [UIColor clearColor];
            byLabel.layer.borderColor = [UIColor grayColor].CGColor;
            byLabel.tag = 3;
    
            CGRect totalRect = CGRectMake(65, 98, 190, 22);
            totalLabel = [[[UILabel alloc] initWithFrame:totalRect] autorelease];
            totalLabel.textAlignment = UITextAlignmentLeft;
            totalLabel.textColor = [UIColor blackColor];
            totalLabel.font = [UIFont systemFontOfSize:12];
            totalLabel.backgroundColor = [UIColor clearColor];
            totalLabel.layer.borderColor = [UIColor grayColor].CGColor;
            totalLabel.tag = 4;
    
            [cellView addSubview:idLabel];
            [cellView addSubview:statusLabel];
            [cellView addSubview:orderDate];
            [cellView addSubview:byLabel];
            [cellView addSubview:totalLabel];
        }
    
        cellView = (UIView *)[cell.contentView viewWithTag:10];
        idLabel = (UILabel *)[cellView viewWithTag:0];
        statusLabel = (UILabel *)[cellView viewWithTag:1];
        orderDate = (UILabel *)[cellView viewWithTag:2];
        byLabel = (UILabel *)[cellView viewWithTag:3];
        totalLabel = (UILabel *)[cellView viewWithTag:4];
        imgView = (UIImageView *)[cellView viewWithTag:5];
        idLabel.text = [NSString stringWithFormat:@"Order Id: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:0]];
        statusLabel.text = [NSString stringWithFormat:@"Status: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:1]];
        orderDate.text = [NSString stringWithFormat:@"Date: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:2]];
        byLabel.text =[NSString stringWithFormat:@"By: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:3]];
        totalLabel.text =[NSString stringWithFormat:@"Total: %@",[[records objectAtIndex:indexPath.section] objectAtIndex:4]];
    
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        //Get the selected country
        NSString *selectedSection = [ NSString stringWithFormat:@"%@",[[records objectAtIndex:indexPath.section] objectAtIndex:0] ];
        dvController = [[OrderDetailsViewController alloc] initWithNibNameAndCurrentTweetUser:@"OrderDetailsViewController" bundle:nil:selectedSection];
        [self.navigationController pushViewController:dvController animated:YES];
        [dvController release];
        dvController = nil;
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 130;
    }
    
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
        UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 20)];
        [v setBackgroundColor:[UIColor blackColor]];
    
        UILabel* hdr = [[[UILabel alloc] initWithFrame:CGRectMake(10,0, tableView.bounds.size.width,20)] autorelease];
        hdr.textAlignment = UITextAlignmentLeft;
        hdr.font = [UIFont fontWithName:@"Arial-BoldMT" size:12];
        hdr.textColor = [UIColor whiteColor];
        hdr.backgroundColor = [UIColor blackColor];
        [v addSubview:hdr];
    
        hdr.text = [NSString stringWithFormat:@"Order #%@",[[records objectAtIndex:section] objectAtIndex:0]];
        return v;
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        return 20;
    }