Синхронизация ABAddressbook-Entries - PullRequest
10 голосов
/ 14 апреля 2011

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 24 мая 2012

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

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);
}
1 голос
/ 07 июня 2012

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

...