ABAddressBookRegisterExternalChangeCallback works, but data is stale

六月ゝ 毕业季﹏ 提交于 2019-12-04 04:39:21

Try to re-create ABAddressBookRef.

    void MyAddressBookExternalChangeCallback (ABAddressBookRef notifyAddressBook,CFDictionaryRef info,void *context)
    {
         NSLog(@"in MyAddressBook External Change Callback");

         //ABAddressBookRevert(notifyAddressBook);
         notifyAddressBook = ABAddressBookCreate();

         CFArrayRef peopleRefs = ABAddressBookCopyArrayOfAllPeopleInSource(notifyAddressBook, kABSourceTypeLocal);

         CFIndex count = CFArrayGetCount(peopleRefs);
         NSMutableArray* people = [NSMutableArray arrayWithCapacity:count];
         for (CFIndex i=0; i < count; i++) {
            ABRecordRef ref = CFArrayGetValueAtIndex(peopleRefs, i);
            ABRecordID id_ = ABRecordGetRecordID(ref);
            TiContactsPerson* person = [[[TiContactsPerson alloc] _initWithPageContext:[context executionContext] recordId:id_ module:context] autorelease];
            NSLog(@"name: %@", [person valueForKey:@"firstName"]);
            NSLog(@"phone: %@", [person valueForKey:@"phone"]);
            NSLog(@"modified: %@", [person valueForKey:@"modified"]);
            [people addObject:person];
         } 

         CFRelease(peopleRefs);    
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!