-2

我从 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;
}
4

2 回答 2

1

如果您使用 XML Parser 委托方法,请在 do 结束元素方法中写入 [myTable reloadData]。它对我来说很顺利。请试试这个。

于 2013-08-28T05:14:44.237 回答
0

实现NSXMLParser的委托方法调用,

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

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

于 2013-08-28T05:45:51.633 回答