为什么我的应用程序在用户向下滚动UITableView时退出,超过最后一个单元格?

时间:2011-11-02 16:34:32

标签: iphone objective-c ios xcode uitableview

当用户向下滚动UITableView时,为什么我的应用会退出,超过第一个/最后一个单元格?

这是我的日志:

2011-11-02 07:53:23.794 School VLE Business[20876:707] *** Terminating app due to uncaught exception 'NSRangeException', reason:     
'*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x30bfa8bf 0x37d9f1e5 0x30b43b6b 0x51493 0x32bf49cb 0x32bf3a09 0x32bf3233 0x32b97d4b 0x30b5922b 0x322ad381 0x322acf99   
0x322b111b 0x322b0e57 0x322d86f1 0x322fb4c5 0x322fb379 0x358e0f93 0x31e8e891 0x30bc3f43 0x30bce553 0x30bce4f5 0x30bcd343 
0x30b504dd 0x30b503a5 0x3377efed 0x32bc2743 0x2645 0x25dc)
terminate called throwing an exception[Switching to process 7171 thread 0x1c03]
(gdb) 

请记住,这是我用来向/从UITableView添加/删除对象的代码:

maincelltext = [[NSMutableArray alloc] init];
subtitlecelltext = [[NSMutableArray alloc] init];

if(maincelltext.count == 0){

[maincelltext addObject:@"No Dates Set"];
[subtitlecelltext addObject:@"Try adding a note!"];

}

if(Assignment1DueDate.text.length > 1){

    [maincelltext addObject:Assignment1.text];
    [subtitlecelltext addObject:Assignment1DueDate.text];

}

if(Assignment2DueDate.text.length > 1){

    [maincelltext addObject:Assignment2.text];
    [subtitlecelltext addObject:Assignment2DueDate.text];

}

if(Assignment3DueDate.text.length > 1){

    [maincelltext addObject:Assignment3.text];
    [subtitlecelltext addObject:Assignment3DueDate.text];

}

if(Assignment4DueDate.text.length > 1){

    [maincelltext addObject:Assignment4.text];
    [subtitlecelltext addObject:Assignment4DueDate.text];

}

......等等......

2 个答案:

答案 0 :(得分:2)

你的一个数组是空的,你正试图从中获取第一个元素。确保此逻辑在-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section调用 UITableView之前运行,以便它可以返回正确的计数。

答案 1 :(得分:0)

将数据提供给UITableView的NSArray未初始化或当时为空 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section ,UITAbleView数据源的委托方法调用。在设置UITableView的dataSource之前,请确保要在UITableView中添加的数据添加到NSArray(您的数据数组)中。