在iOS应用中实现通讯录,如何删除重复的联系人?

时间:2015-01-12 21:36:09

标签: ios objective-c nsmutabledictionary

我有一个方法 - (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person 当我点击联系人的姓名时,它会被添加到屏幕上的表格中,但如果我再次点击相同的名称,则会添加重复的值。我有另一种方法可以显示联系人表。以下是我的方法:

-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person {
NSMutableDictionary *contactInfoDict = [[NSMutableDictionary alloc]
                                        initWithObjects:@[@"", @"", @""]
                                        forKeys:@[@"firstName", @"lastName", @"mobileNumber"]];
CFTypeRef generalCFObject;
generalCFObject = ABRecordCopyValue(person, kABPersonFirstNameProperty);
if (generalCFObject) {
    printf("here");
    [contactInfoDict setObject:(__bridge NSString *)generalCFObject forKey:@"firstName"];
    CFRelease(generalCFObject);
}
generalCFObject = ABRecordCopyValue(person, kABPersonLastNameProperty);
if (generalCFObject) {
    [contactInfoDict setObject:(__bridge NSString *)generalCFObject forKey:@"lastName"];
    CFRelease(generalCFObject);
}
ABMultiValueRef phonesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);

for (int i=0; i < ABMultiValueGetCount(phonesRef); i++) {
    CFStringRef currentPhoneLabel = ABMultiValueCopyLabelAtIndex(phonesRef, i);
    CFStringRef currentPhoneValue = ABMultiValueCopyValueAtIndex(phonesRef, i);

    if (CFStringCompare(currentPhoneLabel, kABPersonPhoneMobileLabel, 0) == kCFCompareEqualTo) {
        [contactInfoDict setObject:(__bridge NSString *)currentPhoneValue forKey:@"mobileNumber"];
    }

    CFRelease(currentPhoneLabel);
    CFRelease(currentPhoneValue);
}
CFRelease(phonesRef);


if (_tableData == nil) {
    _tableData = [[NSMutableArray alloc] init];
    printf("there");
}
[_tableData addObject:contactInfoDict];
[self.tableView reloadData];
NSLog(@"value of number is%@",[contactInfoDict objectForKey:@"mobileNumber"]);
[_picker dismissViewControllerAnimated:YES completion:nil];
}



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
    }

    NSDictionary *contact = _tableData[indexPath.row];
    cell.textLabel.text = [contact[@"firstName"] stringByAppendingFormat:@" %@",contact[@"lastName"]];
    cell.detailTextLabel.text = contact[@"mobileNumber"];


    return cell;
}

0 个答案:

没有答案