Note that there are some explanatory texts on larger screens.

plurals
  1. POUITableView crashes on scrolling
    text
    copied!<p>I am facing a problem in table view, the application crashes as soon as i scrolldown and try to select a row. Error I am getting in console is</p> <pre><code>Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' </code></pre> <p>Please help me to understand why i am getting this error, I dont think there is any nil element in my array, let me show you the code </p> <p>I have created a SelectContactViewController in which a user can select number of contact so the files are </p> <p>SelectContactController.h</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; #import &lt;AddressBook/AddressBook.h&gt; #import &lt;AddressBookUI/AddressBookUI.h&gt; @interface SelectContactController :UIViewController &lt;UITableViewDataSource, UITableViewDelegate&gt; { NSArray *selectedImageIds; NSArray *selectContacts; } @property (nonatomic, retain) NSArray *selectContacts; </code></pre> <p>and the implementation file SelectContactController.m</p> <pre><code>#import "SelectContactController.h" @interface SelectContactController () @end @implementation SelectContactController @synthesize selectContacts; - (void)viewDidLoad { [super viewDidLoad]; selectContacts = [[NSArray alloc] init]; selectedRows = [[NSMutableArray alloc] init]; contactDictionary = [[NSMutableDictionary alloc] init]; id appDelegate = (id)[[UIApplication sharedApplication] delegate]; managedObjectContext = [appDelegate managedObjectContext]; selectedImageIds = [appDelegate selectedImageIds]; [self getAddressbookData]; } #pragma mark - Address book Methods -(void)getAddressbookData { #if __IPHONE_OS_VERSION_MIN_REQUIRED &lt; 60000 ABAddressBookRef addressBook = ABAddressBookCreate(); #else CFErrorRef *error = nil; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); #endif NSArray * people; BOOL accessGranted = [self __addressBookAccessStatus:addressBook]; if (accessGranted) { people = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); // Do whatever you need with thePeople... } CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); NSMutableArray *contactArray = [[NSMutableArray alloc] init]; for (CFIndex i = 0; i &lt; nPeople; i++) { ABRecordRef record = CFArrayGetValueAtIndex((__bridge CFArrayRef)(people), i); NSString *firstName = (__bridge NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty); NSString *lastName = (__bridge NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty); NSString *fullName = nil; if (ABPersonGetCompositeNameFormat() == kABPersonCompositeNameFormatFirstNameFirst) fullName = [NSString stringWithFormat:@"%@ %@", firstName, lastName]; else fullName = [NSString stringWithFormat:@"%@, %@", lastName, firstName]; [contactArray addObject:fullName]; // // Phone Numbers // ABMutableMultiValueRef phoneNumbers = ABRecordCopyValue(record, kABPersonPhoneProperty); CFIndex phoneNumberCount = ABMultiValueGetCount( phoneNumbers ); NSMutableArray *numbersArray = [[NSMutableArray alloc] init]; for ( CFIndex k=0; k&lt;phoneNumberCount; k++ ) { CFStringRef phoneNumberLabel = ABMultiValueCopyLabelAtIndex( phoneNumbers, k ); CFStringRef phoneNumberValue = ABMultiValueCopyValueAtIndex( phoneNumbers, k ); CFStringRef phoneNumberLocalizedLabel = ABAddressBookCopyLocalizedLabel( phoneNumberLabel ); // converts "_$!&lt;Work&gt;!$_" to "work" and "_$!&lt;Mobile&gt;!$_" to "mobile" // Find the ones you want here // // NSLog(@"-----PHONE ENTRY -&gt; name:%@ : %@ : %@", fullName, phoneNumberLocalizedLabel, phoneNumberValue ); [numbersArray addObject:CFBridgingRelease(phoneNumberValue)]; CFRelease(phoneNumberLocalizedLabel); CFRelease(phoneNumberLabel); CFRelease(phoneNumberValue); } // NSLog(@"phone numbers %@", numbersArray); [contactDictionary setObject:numbersArray forKey:fullName]; CFRelease(record); } selectContacts = contactArray; // NSLog(@"dictionary of array %@", contactDictionary); //NSLog(@"contacts count %d", [selectContacts count]); } -(BOOL)__addressBookAccessStatus:(ABAddressBookRef) addressBook { __block BOOL accessGranted = NO; if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6 dispatch_semaphore_t sema = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { accessGranted = granted; dispatch_semaphore_signal(sema); }); dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); // dispatch_release(sema); } else { // we're on iOS 5 or older accessGranted = YES; } return accessGranted; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. NSLog(@"select content count %d", [selectContacts count]); return [selectContacts count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [self.selectContacts objectAtIndex:indexPath.row]; return cell; } </code></pre> <p>Please help me to resolve this issue</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload