如何发布数据并将XMLparser设置为UITableview

时间:2013-08-28 05:09:49

标签: ios objective-c xcode

我从php服务器接收XML格式的一些数据。我使用XMLParser来解析响应。我能够解析数据并通过NSLoging确认解析后的数据。我的问题是我无法将解析后的数据加载到UITableView。

    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{



        if([elementName isEqualToString: subject]){
            [dict setObject: currentSubject forKey: subject];
        }else if([elementName isEqualToString: newsid]){
            [dict setObject: currentID forKey: newsid];


            // Add Object
        }else if([elementName isEqualToString: @"user"]){
            [myObject addObject: dict];    
        }
        [mytable reloadData];
    }

- (void)parserDidEndDocument:(NSXMLParser *)parser {

    NSLog(@"Gallery list array has %d items", [myObject count]);
    NSMutableDictionary *data;
    for(int i = 0; i < [myObject count]; i ++){
        data = [myObject objectAtIndex: i];
        NSLog(@"\nGalleryID: %@\nName: %@\n\n",
              [data objectForKey: subject],
              [data objectForKey: newsid]);
            }

    // Reload Data
    [mytable reloadData];
}


// delegate for TableView

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return myObject.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        // Use the default cell style.
        cell = [[[UITableViewCell alloc] initWithStyle : UITableViewCellStyleSubtitle
                                       reuseIdentifier : CellIdentifier] autorelease];
    }


    NSDictionary *tmpDict = [myObject objectAtIndex:indexPath.row];

    cell.textLabel.text = [tmpDict objectForKey:subject];

    return cell;
}

2 个答案:

答案 0 :(得分:1)

如果您使用了XML Parser委托方法,请在did end element方法中编写[myTable reloadData]。它可以顺利地为我工作。请试试。

答案 1 :(得分:0)

实施名为

NSXMLParser 委托方法
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//reload your tableview...
}

解析器对象在成功完成解析后发送给委托。