Синхронизация ABAddressbook-Entries

У меня есть iPad-приложение, которое синхронизирует контакты с контактами на стороне сервера.

Как определить только те записи ABAdressbook-Entries, которые изменились? Возможно, что происходят изменения на стороне сервера, в моем приложении или снаружи на ipad.

Когда я использую

void ABAddressBookRegisterExternalChangeCallback (
   ABAddressBookRef addressBook,
   ABExternalChangeCallback callback,
   void *context
);

Я получаю обратный вызов внешних изменений, но без какой-либо информации о том, что изменилось. Как получить эту информацию?

Когда я использую NSString * const kABModificationDateProperty, я не знаю, с чем сравнивать.

Ответ 1

Я не знаю, если у вас есть решение для этого. Если нет, возможно, это поможет вам:

NSArray *allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(yourAddressBook);

for (int i = 0; i < allPeople.count; i++) {
    ABRecordRef *person = (ABAddressBookRef *)[allPeople abjectAtIndex:i];

    NSDate *lastModiDate = (NSDate*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
    NSLog(@"Last modification date: %@ of entry: %@", lastModiDate, person);
}

Ответ 2

Вам нужно будет фактически сравнить все поля между сервером и локальной книгой для каждого человека, который вы хотите синхронизировать.