Application error when starting UITableView

I wonder why my application crashes when I view my UITableView.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; NSArray *arrayForNames=[[NSArray alloc]initWithArray:[objContentManager getDuasNamesByGroupName:[arrayDuaGroups objectAtIndex:indexPath.section]]]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // implementation on cell } 

When I scroll through programs, it fails with UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

I saw the tutorials and all I can find there is no other implementation, it scrolls quite smoothly, but when I scroll through the backup, it immediately crashes, I don’t understand where

 > 2011-06-24 15:07:10.976 > Tasbeeh[503:207] *** Terminating app > due to uncaught exception > 'NSRangeException', reason: '*** > -[NSArray objectAtIndex:]: index 1 beyond bounds [0 .. 0]' > *** Call stack at first throw: ( 0 CoreFoundation > 0x02553919 __exceptionPreprocess + 185 > 1 libobjc.A.dylib > 0x023685de objc_exception_throw + 47 > 2 CoreFoundation > 0x0254958c -[__NSArrayI > objectAtIndex:] + 236 3 Tasbeeh > 0x00002922 -[ClassDuaTableCategory > tableView:cellForRowAtIndexPath:] + > 553 4 UIKit > 0x00326a3f > -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] > + 619 5 UIKit 0x0031cad2 > -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 6 UIKit > 0x00331337 > -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1348 7 UIKit > 0x003294bc -[UITableView > layoutSubviews] + 242 8 QuartzCore > 0x040e30d5 -[CALayer layoutSublayers] > + 177 9 QuartzCore 0x040e2e05 CALayerLayoutIfNeeded + 220 > 10 QuartzCore > 0x040e264c > _ZN2CA7Context18commit_transactionEPNS_11TransactionE > + 302 11 QuartzCore 0x040e22b0 > _ZN2CA11Transaction6commitEv + 292 12 QuartzCore > 0x040e9f5b > _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv > + 99 13 CoreFoundation 0x02534d1b > __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ > + 27 14 CoreFoundation 0x024c9987 __CFRunLoopDoObservers + > 295 15 CoreFoundation > 0x02492c17 __CFRunLoopRun + 1575 16 > CoreFoundation > 0x02492280 CFRunLoopRunSpecific + 208 > 17 CoreFoundation > 0x024921a1 CFRunLoopRunInMode + 97 18 > GraphicsServices > 0x02cb82c8 GSEventRunModal + 217 19 > GraphicsServices > 0x02cb838d GSEventRun + 115 20 UIKit > 0x002c4b58 UIApplicationMain + 1160 > 21 Tasbeeh > 0x00002024 main + 102 22 Tasbeeh > 0x00001fb5 start + 53 ) terminate > called after throwing an instance of > 'NSException' Program received signal: > "SIGABRT". 

Please suggest me.

Thanks.

+2
source share
5 answers

Is it possible that indexPath goes to a value that points to an invalid index on arrayDuaGroups

+1
source

Please check the nib file of your table controller.

Under your view controller there should be a “table view”.

Click to see the attribute inspector in the table view.

Check the “content” to see if it has been assigned Dynamic Prototypes or a Static Cell?

Changing the "static cell" to "Dynamic Prototypes" may solve your problem.

+3
source

Try commenting on cell = nil, if and let only cell = part, if that's what I think it will fix it

  // if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; // } 

EDIT: AFTER viewing the log - The problem is that the array as a data source, when it tries to rebuild the cell, it does not find anything in your array (arrayDuaGroups), it is empty, declares your array in the class interface with the property being saved and checks if arrayDuaGroups is empty

+1
source

Try using below

 NSString *CellIdentifier = [NSString stringWithFormat:@"Cell_%d_%d",indexPath.section,indexPath.row]; EDITED: 

You have a problem with NSArray , you are trying to access an element from an array that does not exist,

There is no object with indexPath.section .

Check the contents and length of the arrayDuaGroups array before retrieving the object.

[arrayDuaGroups objectAtIndex: indexPath.section]

0
source

This seems to be an exception to the boundaries. Your array is a problem. you should not allocate an array to the cellForRowAtIndexPath method. Fill in the data in the viewDidLoad method, and then use this array to display the data in the cell.

0
source

Source: https://habr.com/ru/post/1491637/


All Articles