Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSArrayM insertObject:atIndex::对象不能为零_Ios_Objective C_Nsmutablearray - Fatal编程技术网

Ios NSArrayM insertObject:atIndex::对象不能为零

Ios NSArrayM insertObject:atIndex::对象不能为零,ios,objective-c,nsmutablearray,Ios,Objective C,Nsmutablearray,您好,这里是下面的函数,我正在从函数中收集NSString值,如firstname和last name,并在数组中赋值 - (void)getPersonOutOfAddressBook { ABAddressBookRef addressBook = ABAddressBookCreate(); if (addressBook != nil) { NSLog(@"Succesful."); NSArray *allContacts = (__bridge_tran

您好,这里是下面的函数,我正在从函数中收集
NSString
值,如firstname和last name,并在数组中赋值

- (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]];
}
}
此处messageToSend是一个NSMutableString

因此,在上面的代码中,我收集了所有的firstname和lastname并将其放入数组中。当我在iphone中运行此代码时,会显示错误
[\uu NSArrayM insertObject:atIndex:]:object不能为nil'

NSLog(@“Myresult”)之后它显示了两次名字和姓氏。所以,有人能告诉我哪里出了问题,以及我如何收集电话号码。我必须在上面的代码中做哪些更改以避免出现错误,并且只显示几个名字,而不是全部

它显示

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::::::

首先检查放入数组中的数据是否为零,如果为零,则跳过它

大概是这样的:

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

您明白了。

要访问大多数内容,请使用下面的代码

            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;

如果错误地推送某个视图控制器而不是另一个视图控制器,则会出现此错误。对我来说

我的代码是。。MainViewController*mainVC=[[UIStoryboard Storyboard with name:@“Main”bundle:nil]实例化视图控制器的标识符:@“mainView”]

[self.navigationController presentViewController:mainVC动画:是完成:无]

而不是。。。。 SWRevealViewController*mainVC=[[UIStoryboard Storyboard with name:@“Main”bundle:nil]实例化eviewcontroller的标识符:@“revealView”]

[self.navigationController presentViewController:mainVC动画:是完成:无]


因此,请确保您正在按正确的视图控制器。我希望这对某些人有所帮助。

messageToSend在哪里分配?在ViewDidload方法中,请检查您为NSMutableArray分配名字和姓氏的位置是否为零?请将NsLog放在将对象添加到数组之前,或者在将对象插入数组之前使用if(firstname){[add object];}if(lastname){[addobject]}在将对象添加到数组时,请检查它是否为零?如果为nil,则不要将其添加到数组中,否则将其添加到数组中。你清楚吗?[name addObject:firstName];[name addObject:lastName];在添加对象之前,请检查名字,lastname不是空的,我知道了,我把它放在上面的代码中,但我会写什么else语句??如果我跳过else,它工作得很好,rite???@user2443391是的,你可以跳过其他语句part@RahulVyas谢谢你它的工作原理是一样的我如何在上面的代码中检索电话号码..我必须做什么更改才能获取电话号码also@RahulVyas谢谢你,也是这样的我该怎么办在上面的代码中检索电话号码..我必须做哪些更改才能同时获取电话号码
            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;