在UITableview数组中显示空线程SIGABRT错误

时间:2013-08-29 05:42:34

标签: iphone ios objective-c uitableview

我是iOS开发的新手。我正在开发我的项目,它完全基于来自url的XML解析。我解析了XML数据并存储在数组中,但我无法在UITableView中显示arraydata。

这是我的代码。

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    eventarray = [[NSMutableArray alloc]init];
    xmlParserObject = [[NSXMLParser alloc] initWithData:webData];
    [xmlParserObject setDelegate:self];
    [xmlParserObject parse];
    for (int i =0; i<[rssOutputData count]; i++) {
        Eventlist *log = [rssOutputData objectAtIndex:i];
        eventid = log.id;
        NSLog(@"%d",eventid);
        Invit = log.eventname;
        NSLog(@"%@",Invit);
    }
    [rssOutputData release];
    [connection release];
    [tblView reloadData];
}

我的数组在此输出值,但是如何在UITableView中传递此数组数据。我尝试了这个但是我没有在表格视图中获取数据。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"eventCell";
    UITableViewCell *cell= [[tableViewdequeueReusableCellWithIdentifier:CellIdentifier]autorelease];
    if(indexPath.section == 0)
    {
        Eventlist *msglist = [eventarray objectAtIndex:indexPath.row];
        cell.textLabel.text = msglist.eventname;
        cell.textLabel.textColor = [UIColor greenColor];
    }
    if(indexPath.section == 1)
    {
        UIButton *viewmoreButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        viewmoreButton.frame = CGRectMake(200.0f, 5.0f, 75.0f, 30.0f);
        [viewmoreButton setTitle:@"View More" forState:UIControlStateNormal];
        [cell addSubview:viewmoreButton];
        [viewmoreButton addTarget:self action:@selector(viewMore:)forControlEvents:UIControlEventTouchUpInside];
    }
    return cell;
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

这不是在tableView中加载数据的正确方法(解析xml时)。因为你完全不确定是否会立即获取数据(对于大的xml文件)。

实施名为

NSXMLParser委托方法
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//here your [tableView reloadData] goes...
}

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

答案 1 :(得分:0)

您似乎将数据存储在rssOutputData,但是您在[rssOutputData release];结束时正在调用connectionDidFinishLoading。您可能在那里丢弃了数据。

看起来eventArray从未添加任何内容。如果您尝试访问不存在的索引,那将导致崩溃。

尝试将for循环更改为:

for (int i =0; i<[rssOutputData count]; i++) {
Eventlist *log = [rssOutputData objectAtIndex:i];
eventid = log.id;
NSLog(@"%d",eventid);
Invit = log.eventname;
NSLog(@"%@",Invit);

[eventArray addObject:log];
}

答案 2 :(得分:0)

尽管我理解你的代码,但我没有看到你填充你的eventarray,因为在cellForRowAtIndexPath中你从该数组中获取一些记录并试图在单元格中显示值,所以当时它肯定是空的。

答案 3 :(得分:-1)

请按照此链接创建示例tableview.replace数组数据而不是使用响应数据数组的常量数据。获取数组值后使用[tableview reloadData];