use*_*003 6 iphone objective-c
在我的应用程序中,我收到所有地址簿数据.但是,当我下次启动应用程序时,我只想在地址簿中检索已修改/新添加的联系人.
你能告诉我任何可能的方法吗?
谢谢.
从iOS 9开始,您可以将您的课程注册到observ CNContactStoreDidChangeNotification:
Obj-C代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addressBookDidChange:) name:CNContactStoreDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
然后:
-(void)addressBookDidChange:(NSNotification*)notification
{
//Handle event here...
}
Run Code Online (Sandbox Code Playgroud)
SWIFT代码:
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "addressBookDidChange:",
name: CNContactStoreDidChangeNotification,
object: nil)
Run Code Online (Sandbox Code Playgroud)
然后:
@objc func addressBookDidChange(notification: NSNotification){
//Handle event here...
}
Run Code Online (Sandbox Code Playgroud)
如" 联系框架参考"中所述
成功执行保存后,联系人存储会将CNContactStoreDidChangeNotification通知发布到默认通知中心.如果缓存任何Contacts框架对象,则需要通过其标识符或最初用于获取它们的谓词来重新获取这些对象,然后释放缓存的对象.请注意,缓存的对象是陈旧的,但不是无效的.
我编写了一个方法来检查通讯录中是否有更新的电话号码或联系人电子邮件;具体来说,仅是用户添加的联系人,但没有什么可以阻止将其扩展到所有联系人。
它称为JPContactArchive,您要检查的方法是-updateContacts。应该有帮助。