ios - NSArrayM插入对象:atIndex:]: object cannot be nil

标签 ios objective-c nsmutablearray

HI 这是下面的函数,我从函数中收集 NSString 值,例如名字和姓氏,并在数组中分配

- (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]];
}
}

还可以发送数据

- (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 can not be 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];

你明白了。

关于ios - NSArrayM插入对象:atIndex:]: object cannot be nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16890799/

相关文章:

iphone - UITabBar 标准图标位置

ios - 如何在组合中安排异步调用的同步序列?

ios - 在 iOS 中定位时加载另一个 .xib

objective-c - 从iPhone删除应用程序时如何删除所有本地通知

iphone - 我可以将 AVAudioPlayer 引用存储在 NSMutableArray 中并随意播放吗?

iphone - 初始化 2 个昏暗数组 NSMutableArray

ios - NSMutableArray 显示(空)/无?

ios - 将图像文件保存到临时目录

ios - 使用 Restkit 忽略映射中的空数组

objective-c - Mac Kiosk 模式 API - 防止用户退出