#ios #ios4 #abaddressbook
#iOS #ios4 #abaddressbook
Вопрос:
У меня есть приложение для iPad, которое синхронизирует контакт с контактами на стороне сервера.
Как мне определить только те записи ABAddressBook, которые изменились? Возможно, что происходят изменения на стороне сервера, в моем приложении или извне на 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);
}
Комментарии:
1. Спасибо за это. Не уверен, что это имеет большое значение, но я бы, вероятно, сделал это вместо:
NSDate *lastModiDate = (NSDate*) [person valueForProperty:kABModificationDateProperty];
Ответ №2:
Вам нужно будет фактически сравнить все поля между сервером и локальной книгой для каждого пользователя, которого вы хотите синхронизировать.