我收到以下错误,对iphone开发和目标C非常新。我非常愿意发送我的项目给某人看看,我在圈子里跑,不知道该做什么下!
2010-11-10 19:38:07.822 iShisha[2698:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** Call stack at first throw:
(
0 CoreFoundation 0x025f9b99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x0274940e objc_exception_throw + 47
2 CoreFoundation 0x025ef695 -[__NSArrayM objectAtIndex:] + 261
3 iShisha 0x00003dc5 -[MapViewController tableView:cellForRowAtIndexPath:] + 1262
4 UIKit 0x0032dd6f -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 619
5 UIKit 0x00323e02 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75
6 UIKit 0x00338774 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561
7 UIKit 0x003307ec -[UITableView layoutSubviews] + 242
8 QuartzCore 0x046d7481 -[CALayer layoutSublayers] + 177
9 QuartzCore 0x046d71b1 CALayerLayoutIfNeeded + 220
10 QuartzCore 0x046d02e0 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 302
11 QuartzCore 0x046d0040 _ZN2CA11Transaction6commitEv + 292
12 QuartzCore 0x04700ebb _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
13 CoreFoundation 0x025daf4b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
14 CoreFoundation 0x0256fb27 __CFRunLoopDoObservers + 295
15 CoreFoundation 0x02538ce7 __CFRunLoopRun + 1575
16 CoreFoundation 0x02538350 CFRunLoopRunSpecific + 208
17 CoreFoundation 0x02538271 CFRunLoopRunInMode + 97
18 GraphicsServices 0x02ed800c GSEventRunModal + 217
19 GraphicsServices 0x02ed80d1 GSEventRun + 115
20 UIKit 0x002caaf2 UIApplicationMain + 1160
21 iShisha 0x00001de8 main + 102
22 iShisha 0x00001d79 start + 53
)
terminate called after throwing an instance of 'NSException'
[Session started at 2010-11-10 19:38:15 +0000.]
Pending breakpoint 1 - ""MapViewController.m":204" resolved
Pending breakpoint 2 - ""MapViewController.m":317" resolved
Pending breakpoint 3 - "objc_exception_throw" resolved
(gdb)
答案 0 :(得分:10)
在CocoaTouch中,表具有委托和数据源。委托发送和接收表视图的消息,数据源控制表中的信息以及表的页眉和页脚。数据源告诉表格要绘制的行数,有多少部分,作为节标题放置的内容等等。
表视图通过
查询数据源要绘制的行数-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
方法。然后,在
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法,tableView要求一个单元格从数据源填充表格。在为iPhone编程时,表主要由数组填充,一个变量(对象)包含许多其他变量(对象)。通过询问
告诉数组你想要什么对象object = [array objectAtIndex:INTEGER]; //where INTEGER is an unsigned (zero or greater, no minus)
发生了什么,是你的数据源期望表的X个对象,并且有X-Y可用。如果它认为有10个,但只有9个,当表要求第10个对象时,你会因为没有任何对象而崩溃。
查看代码中的hte line
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
并查看该代码是什么。你有可能在那里提供错误的数据。
祝你好运答案 1 :(得分:1)
我认为不需要为此更改从静态到动态的单元格(有些情况下您可能需要单元格是静态的)。可能导致此问题的原因是您可能只在故事板的“属性检查器”部分中为表视图命名了0个部分。您需要做的就是将此数字增加到1或尽可能多的部分。
我认为这就是@ styfle的问题。