0

この一連のコードを使用して、連絡先に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];
                }

            }

        }
    }
4

1 に答える 1

0

次の手順を実行します:

  1. アドレス帳データを取得するのと同じ方法で取得します。それで
  2. 連絡先の配列を作成します(名前と連絡先の辞書を含む)
  3. 繰り返しのユーザー名データを使用して、各連絡先番号を個別のインデックスに追加します
  4. この連絡先データをtableView
于 2013-02-15T12:08:11.140 に答える