NSRangeException',原因:'*** - [__ NSArrayM objectAtIndex:]:当呈现视图控制器时,索引0超出空数组的边界'

时间:2012-06-14 08:36:09

标签: iphone objective-c ios

我开发了一款应用程序,在测试中运行良好,但是当它可以存在时,我在呈现模态视图控制器时遇到了一些崩溃问题。问题出在这里的一些地方:

NSLog(@"Looks like we made it here 1");

UIViewController *mtaViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"mtaViewController"];
NSLog(@"Looks like we made it here 2");

[mtaViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
NSLog(@"Looks like we made it here 3");

[self presentModalViewController:mtaViewController animated:YES]; 
NSLog(@"Looks like we made it here 4");

我输出到控制台是:

2012-06-14 09:26:24.161 appname[2013:707] Looks like we made it here 1
2012-06-14 09:26:24.165 appname[2013:707] Looks like we made it here 2
2012-06-14 09:26:24.166 appname[2013:707] Looks like we made it here 3
2012-06-14 09:26:28.866 appname[2013:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x343ac8bf 0x345fc1e5 0x342f5b6b 0x6d3fd 0x6e719 0x3778e7ff 0x37798d53 0x37798cc1 0x37838339 0x3783714f 0x37891d97 0x7ce1d 0x7cd47 0x3788eaa5 0x3776a81b 0x3776ffb9 0x34ec1ba7 0x36fe0e8d 0x3437f2dd 0x343024dd 0x343023a5 0x30b86fcd 0x37783743 0x84327 0x6b468)
terminate called throwing an exception

我已经设置了一个函数,当我想要更改视图控制器时我会调用它,因为你可以看到它一直到“看起来我们在这里做了3”所以我怀疑存在一个问题线

[self presentModalViewController:mtaViewController animated:YES];

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你确定你看到控制器真的被初始化了吗?只是一个想法,但这一行

[mtaViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
如果mtaViewController为零,

将无能为力。在Cocoa中,你可以毫无问题地发送消息给nil。只有在您尝试使用特定内容执行某些操作时,您的应用才会崩溃。确实

NSLog(@"%@", mtaViewController);

告诉你一些有用的东西?请确保您已连接IB中必须连接的所有内容(如果您没有使用原始代码处理所有内容)。

顺便说一下。这已被弃用。使用

presentViewController:animated:completion:

代替。

答案 1 :(得分:1)

检查mta ViewController中的任何数组,我在代码中没有看到任何数组,因此我认为问题出在mta ViewController中。 :)