2013-06-03 3 views
-1

HI здесь ниже функция, где я собираю NSString ценности, как ПгвЬЫат и фамилии от функции и назначения в ней массивNSArrayM insertObject: atIndex]: объект не может быть нулевым

- (void)getPersonOutOfAddressBook 
{ 


    ABAddressBookRef addressBook = ABAddressBookCreate(); 
if (addressBook != nil) 
{ 
    NSLog(@"Succesful."); 

    NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); 

    NSUInteger i = 0; 
    NSLog(@" Result :%d",[allContacts count]); 
    for (i = 0; i < [allContacts count]; i++) 
    { 
     ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i]; 



     NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty); 

     NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty); 


     NSMutableArray *name = [NSMutableArray array]; 
     [name addObject:firstName]; 
     [name addObject:lastName]; 


     [self displaynames:name]; 

     //NSLog(@"FirstNAme::::: LastNAME::::MobileNUMb::::EMail::: %@ %@",firstName,lastName); 

     ABMultiValueRef mobile=ABRecordCopyValue(contactPerson, kABPersonPhoneProperty); 

     for (int k=0;k<ABMultiValueGetCount(mobile); k++) 
     { 
      NSString *mobileNo = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(mobile, k); 
      // NSLog(@"mobile number: %@",mobileNo); 


     } 

} 

-(void)displaynames:(NSMutableArray*)names{ 
for(NSMutableArray* name in names){ 

    NSLog(@"MyResult:%@ %@",[names objectAtIndex:0],[names objectAtIndex:1]); 

    messageToSend = [messageToSend stringByAppendingString:[names objectAtIndex:0]]; 
    messageToSend = [messageToSend stringByAppendingString:[names objectAtIndex:1]]; 
} 
} 

А также отправить Data

- (IBAction)sendContacts:(id)sender 
{ 

NSData *textData = [self.messageToSend dataUsingEncoding:NSASCIIStringEncoding]; 
//send data to all connected devices 
[self.session sendDataToAllPeers:textData withDataMode:GKSendDataReliable error:nil]; 
} 

здесь messageToSend является NSMutableString

Таким образом, в приведенном выше коде я собираю все имя и фамилию и размещение в нем массива. Когда я запустил это в iphone, он показывает ошибку. [__NSArrayM insertObject:atIndex:]: object cannot be nil'

После NSLog(@"Myresult"); он отображает имя и фамилию дважды. Можно ли мне позвонить мне, где я ошибаюсь, и как это сделать собирайте phonenumber как привет. Какие изменения я должен сделать в приведенном выше коде, чтобы избежать этой ошибки, и он отображает только несколько имен не всех.

Он отображает

2013-06-03 11:40:12.524 GetContacts[1173:1bb03] Succesful. 
2013-06-03 11:40:12.539 getlist[1173:1bb03] Result :2 
2013-06-03 11:40:12.567 getlist[1173:1bb03] MyResult:john cena 
2013-06-03 11:40:12.568 getlist[1173:1bb03] Successsssss:::::: 
2013-06-03 11:40:12.569 getlist[1173:1bb03] MyResult:john cena 
2013-06-03 11:40:12.571 getlist[1173:1bb03] Successsssss:::::: 
2013-06-03 11:40:12.734 getlist[1173:1bb03] MyResult:peter john 
2013-06-03 11:40:12.735 getlist[1173:1bb03] Successsssss:::::: 
2013-06-03 11:40:12.736 getlist[1173:1bb03] MyResult:peter john 
2013-06-03 11:40:12.737 getlist[1173:1bb03] Successsssss:::::: 
+0

Где отправлено messageToSend? –

+0

in ViewDidload – user2443391

+0

Проверьте, что где вы назначаете имя и фамилию NSMutableArray, ничего нет или нет? Plesae помещает NsLog раньше, чтобы добавить объект в массив или использовать if (firstname) {[добавить объект];} if (lastname) {[addobject]} перед вставкой объекта в массив – iEinstein

ответ

1

Сначала проверьте, если данные, которые вы ставите внутри массива равен нулю, если это просто пропустить его.

что-то вроде этого:

if(firstName != nil) 
    [yourMutableArray addObject:firstname]; 

вы получите идею.

+0

ya я получил это, я поставил выше код, но что бы я написал иначе заявление? Если я пропущу еще, то он работает отлично обряда ?? – user2443391

+0

@ user2443391 ДА, вы можете пропустить еще часть –

+0

@RahulVyas поблагодарить u он работает так же, как я могу восстановить номер телефона в вышеуказанном коде .. какие изменения я должен сделать, чтобы получить номер телефона также – user2443391

0

доступ к большинству вещей использовать ниже код

  CFStringRef firstName = ABRecordCopyValue(record , kABPersonFirstNameProperty); 
      CFStringRef LastName = ABRecordCopyValue(record, kABPersonLastNameProperty); 
      CFStringRef companyRef = ABRecordCopyValue(record, kABPersonOrganizationProperty); 
      CFDateRef birthDate = ABRecordCopyValue(record, kABPersonBirthdayProperty); 


      CFStringRef prefixName = ABRecordCopyValue(record , kABPersonPrefixProperty); 
      CFStringRef phoneticFirstName = ABRecordCopyValue(record , kABPersonFirstNamePhoneticProperty); 
      CFStringRef phoneticLastName = ABRecordCopyValue(record , kABPersonLastNamePhoneticProperty); 
      CFStringRef middleName = ABRecordCopyValue(record , kABPersonMiddleNameProperty); 
      CFStringRef suffixName = ABRecordCopyValue(record , kABPersonSuffixProperty); 
      CFStringRef nickName = ABRecordCopyValue(record , kABPersonNicknameProperty); 
      CFStringRef jobTitle = ABRecordCopyValue(record , kABPersonJobTitleProperty); 
      CFStringRef department = ABRecordCopyValue(record , kABPersonDepartmentProperty); 
      CFStringRef notes = ABRecordCopyValue(record , kABPersonNoteProperty); 



      NSString *LastNameStr = (NSString *)LastName; 
      NSString *firstNameStr = (NSString *)firstName; 
      NSString *companyStr = (NSString *)companyRef; 
      NSDate *birthDateValue = (NSDate *)birthDate; 

      NSString *prefixNameStr = (NSString *)prefixName; 
      NSString *phoneticFirstNameStr = (NSString *)phoneticFirstName; 
      NSString *phoneticLastNameStr = (NSString *)phoneticLastName; 
      NSString *middleNameStr = (NSString *)middleName; 
      NSString *suffixNameStr = (NSString *)suffixName; 
      NSString *nickNameStr = (NSString *)nickName; 
      NSString *jobTitleStr = (NSString *)jobTitle; 
      NSString *departmentStr = (NSString *)department; 
      NSString *notesStr = (NSString *)notes; 
0

Если нажать какой-то вид контроллера вместо другой контроллер представления по ошибке вы получите эту ошибку. Для меня ..

Я закодирован как .. MainViewController * mainVC = [[UIStoryboard storyboardWithName: @ "Main" bundle: nil] instantiateViewControllerWithIdentifier: @ "mainView"];

[self.navigationController presentViewController: mainVC animated: YES завершение: nil];

вместо .... SWRevealViewController * mainVC = [[UIStoryboard storyboardWithName: @ "Main" пачке: ноль] instantiateViewControllerWithIdentifier: @ "revealView"];

[self.navigationController presentViewController: mainVC animated: YES завершение: nil];

Итак, убедитесь, что вы нажимаете правильный регулятор. Я надеюсь, что это помогает кому-то.

Смежные вопросы