如何显示两个同名但号码不同的联系人

时间:2013-02-15 11:53:41

标签: iphone xcode

我正在使用这一堆代码,我通过该代码检查如果联系人有2个号码,那么他们将显示2个具有不同号码的相同姓名的联系人..但此代码有时无法正确获取数据

self.contacts = [ABContactsHelper personalSorting];
 NSString *emailAre;
   for (int i=0; i< [self.contacts count]; i++)
    {
        ABContact *contObj = [self.contacts objectAtIndex:i];        
        if([contObj.emailDictionaries count] >=1)
            emailAre = [[contObj.emailDictionaries objectAtIndex:0]objectForKey:@"value"];
           // emailAre = @"";
        else
            emailAre = @"";
        for (int j=0; j< [contObj.phoneDictionaries  count]; j++) 
        {
            if([contObj.phoneDictionaries count] != 0)
            {
                if([[contObj.phoneDictionaries objectAtIndex:j] count] >= 1)
                {
                    NSLog(@"***************************************");
                    NSLog(@"contact Name %@",contObj.firstname);
                    NSLog(@"contact Number %@",[[contObj.phoneDictionaries objectAtIndex:j]objectForKey:@"value"]);
                    NSLog(@"***************************************");

                    NSString *phones = [[contObj.phoneDictionaries objectAtIndex:j]objectForKey:@"value"];

                    CFErrorRef  anError = NULL;
                    ABRecordRef aRecord = ABPersonCreate(); 
                    // Set the record values
                    ABRecordSetValue(aRecord, kABPersonFirstNameProperty, 
                                     contObj.firstname, &anError); 

                     ABMutableMultiValueRef multiTelephone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
                     ABMultiValueAddValueAndLabel(multiTelephone, phones, kABPersonPhoneMainLabel, NULL);

                     ABRecordSetValue(aRecord, kABPersonPhoneProperty, multiTelephone, &anError);

                    /// Image
                    NSData *dataRef = UIImagePNGRepresentation(contObj.image);

                    ABPersonSetImageData(aRecord, (CFDataRef)dataRef, &anError);
                    /// Image

                     ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);

                     ABMultiValueAddValueAndLabel(multiEmail, emailAre, kABWorkLabel, NULL);

                     ABRecordSetValue(aRecord, kABPersonEmailProperty, multiEmail, &anError);

                     ABContact *newContract = [ABContact contactWithRecord:aRecord]; 

                    [dup addObject:newContract];
                }

            }

        }
    }

1 个答案:

答案 0 :(得分:0)

请按照以下步骤操作:

  1. 以与检索地址簿数据相同的方式检索地址簿数据。然后
  2. 制作一系列联系人(包含姓名字典和联系人号码)
  3. 在重复的用户名数据
  4. 的单独索引中添加每个联系人号
  5. 现在在tableView
  6. 中填充此联系人数据