我从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;
}
答案 0 :(得分:1)
如果您使用了XML Parser委托方法,请在did end element方法中编写[myTable reloadData]。它可以顺利地为我工作。请试试。
答案 1 :(得分:0)
实施名为
的 NSXMLParser 委托方法- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//reload your tableview...
}
解析器对象在成功完成解析后发送给委托。