Я использую следующий код для создания представления V-карты для всех моих контактов.Предотвращение дублирования контактов при добавлении из .vcf всех контактов с использованием метода ABPersonCreatePeopleInSourceWithVCardRepresentation
ABAddressBookRef addressBook = ABAddressBookCreate();
//------------------------------------------------- create vcf file------------------------------------------
CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFDataRef vcards = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contacts);
NSString *vcardString = [[NSString alloc] initWithData:(NSData *)vcards encoding:NSUTF8StringEncoding];
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *folderPath = [paths objectAtIndex:0];
NSString *filePath = [folderPath stringByAppendingPathComponent:@"contacts.vcf"];
[vcardString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"Documents directory: %@",[fileMgr contentsOfDirectoryAtPath: folderPath error:&error]);
//------------------------------------------------- create vcf file------------------------------------------
После этого я добавил контакты с моим Addressbook, используя следующий код:
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
if (exists)
{
NSLog(@"File Exist and Ready to send");
NSString *vCardString = [[NSString alloc]initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
CFDataRef vCardData = (CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding];
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
ABAddressBookAddRecord(addressBook, person, NULL);
CFRelease(person);
}
CFRelease(vCardPeople);
ABAddressBookSave(addressBook, NULL);
}
Вопрос в том, когда я добавлять записи в адресной книге он не заменяя повторяющиеся контакты. Он просто добавляет все контакты, и почти все контакты становятся дублирующими. Как я могу помешать этому добавить дубликаты. есть ли способ или какое-то другое предложение, которое может помочь. Я думаю, что перед добавлением контакта в адресную книгу нам нужно проверить, существует ли тот же контакт в адресной книге или нет. Но как мы можем проверить, существует ли контакт в адресной книге или нет.
Заранее спасибо.
Если вы используете правильную структуру данных, эта проблема исчезнет. Попробуйте использовать HashMap, который не позволяет дублировать. – AAV
Не могли бы вы рассказать мне, как использовать HashMap. –