2013-03-19 64 views

回答

3

你不能。你可以做的是,这将给你一个“在给定时间内修改”的联系人列表,例如:

void MyAddressBookExternalChangeCallback (ABAddressBookRef notifyAddressBook,CFDictionaryRef info,void *context) 
{   
    //The addressbook object get's updated. 


    CFArrayRef peopleRefs = ABAddressBookCopyArrayOfAllPeopleInSource(notifyAddressBook, kABSourceTypeLocal); 



    ABAddressBookRevert(notifyAddressBook); 

    CFIndex count = CFArrayGetCount(peopleRefs); 

    for (CFIndex i=0; i < count; i++) { 
     ABRecordRef ref = CFArrayGetValueAtIndex(peopleRefs, i); 
     NSDate* datemod = (__bridge_transfer NSDate *)(ABRecordCopyValue(ref, kABPersonModificationDateProperty)); 


     NSTimeInterval distanceBetweenDates = [[NSDate date] timeIntervalSinceDate:datemod]; 

     int seconds = round(distanceBetweenDates); 

     if(seconds < 60){ 

      ABCPerson * person = [[ABCFacade sharedABCFacade] convertABRecordRef:ref]; 
      NSLog(@"modifactiondate: %@", [person modificationdate]); 

      [[ABCFacade sharedABCFacade] replacePersonInPersonListWithPerson:person]; 

     } 
    } 


    NSLog(@"Yes it does get called by this change %@", context); 

    [[ABCFacade sharedABCFacade] ABRefresh]; 
} 
+0

我想这是唯一的方法。谢谢。 – wjheng 2013-03-20 01:43:58

相关问题