首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相当于ABAddressBook.ABAddressBookRegisterExternalChangeCallback的联系框架

相当于ABAddressBook.ABAddressBookRegisterExternalChangeCallback的联系框架
EN

Stack Overflow用户
提问于 2016-03-22 17:49:56
回答 1查看 1.3K关注 0票数 23

我正在将一个应用程序从过时的通讯簿框架迁移到新的联系人框架。该应用程序利用ABAddressBookRegisterExternalChangeCallback在另一个应用程序更改联系人时得到通知。

我在联系人框架中找不到等效的功能。苹果公司的文档中说要使用the CNContactStoreDidChangeNotification notification的默认通知中心

当另一个CNContactStore中发生更改时发布的通知。

根据Apple的建议,我的代码如下所示:

代码语言:javascript
运行
复制
NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "contactsChanged:",
    name: CNContactStoreDidChangeNotification,
    object: nil)

然而,我发现这种方法有两个问题:

  1. 所有更改都会通知我,包括我自己的application.
  2. Notifications所做的更改都是虚假的-我会收到许多针对单个更改的通知。

如果我在我的应用程序中进行更改时记录通知的调试描述,我会得到如下内容:

代码语言:javascript
运行
复制
NSConcreteNotification 0x7d3370e0 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}

如果更改是在外部进行的:

代码语言:javascript
运行
复制
NSConcreteNotification 0x7bf7a690 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}

如你所见,没有什么明显的东西可以区分它们。

谁能告诉我如何从联系人框架中获得与从ABAddressBookRegisterExternalChangeCallback中获得的行为相同的行为

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36151039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档