在Mac OS X上未触发CNContactStoreDidChangeNotification

时间:2016-07-12 14:37:00

标签: macos contacts

我正在尝试观察其他应用程序(如Contacts.app)是否会对联系人执行更新以更新我的应用中的联系人列表。该应用程序是Mac OS X应用程序。

我使用

在AppDelegate.swift中添加观察者
 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(AppDelegate.addressBookDidChange(_:)), name: CNContactStoreDidChangeNotification, object: nil)  

,选择器是

@objc func addressBookDidChange(notification:NSNotification){  
    print("Contacts need update!")  
}.

虽然我使用Contacts.app

更新了联系人,但我没有观察到任何输出

我错过了什么吗?

操作系统是macOS Sierra Beta 2。 我使用Contacts框架。

1 个答案:

答案 0 :(得分:3)

要观察CNContactStore通知,您应该创建此商店并继续参考。

fileprivate var CNContactStore: CNContactStore? = nil

func addObserver() {
    contactStore = CNContactStore()
    NSNotificationCenter.default.addObserver(self, selector: #selector(addressBookDidChange(notification:)), name: NSNotification.Name.CNContactStoreDidChange, object: nil)
}