简体   繁体   中英

ios crash issue - NSRange

I got this error message.

GoogleAnalytics 2.0b3 void GAIUncaughtExceptionHandler(NSException *)     
(GAIUncaughtExceptionHandler.m:41): Uncaught exception: *** -[__NSArrayM objectAtIndex:]: 
index 2 beyond bounds [0 .. 1]
libc++abi.dylib: terminate_handler unexpectedly threw an exception

When I trying to zoom page, I got crash and this error in crashlytics.

Thread : Fatal Exception: NSRangeException
0  CoreFoundation                 0x31a202a3 __exceptionPreprocess + 162
1  libobjc.A.dylib                0x3974897f objc_exception_throw + 30
2  CoreFoundation                 0x3196bb75 -[__NSArrayM objectAtIndex:] + 164
3  TestApp                       0x000b1bfb -[EpisodeTableViewDelegate    
tableView:didSelectRowAtIndexPath:] (EpisodeTableViewDelegate.m:155)
4  UIKit                          0x338ea28d -[UITableView 
_selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 876
5  UIKit                          0x3396cf81 -[UITableView 
_userSelectRowAtPendingSelectionIndexPath:] + 156
6  Foundation                     0x3232e277 __NSFireDelayedPerform + 450
7  CoreFoundation                 0x319f55df __
CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
8  CoreFoundation                 0x319f5291 __CFRunLoopDoTimer + 272
9  CoreFoundation                 0x319f3f01 __CFRunLoopRun + 1232
10 CoreFoundation                 0x31966ebd CFRunLoopRunSpecific + 356
11 CoreFoundation                 0x31966d49 CFRunLoopRunInMode + 104
12 GraphicsServices               0x3553f2eb GSEventRunModal + 74
13 UIKit                          0x3387c301 UIApplicationMain + 1120
14 Tapastic                       0x00075cb7 main (main.m:16)
15 Tapastic                       0x000753b8 start

My code is as below:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
    if (indexPath.section == 1) {
        Episode *episode = [[Episode alloc] init];
        [episode bindProperties:[self.pager.contents objectAtIndex:indexPath.row]];
        [self.baseController performSegueWithIdentifier:SEGUE_EPISODE_VIEW sender:episode];
    }
}

I cannot solve this problem. How can I fix it? If possible, please let know. Thanks in advance.

You're calling objectAtIndex on the episode array with index 2, when there are only two objects in the array. Array objects are numbered starting with 0, so an array with two objects only has elements 0 and 1.

It sounds like you're not setting up your UITableView correctly. If there are only two objects in the array backing the table, there should only be two rows in the table.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM