swift - 观察接触变化
问题描述
嗨,我试图观察联系人列表中的变化。在视图控制器中,我设置了接收联系人更改事件的通知。
class TestChangeContatct: UIViewController{
@IBOutlet var textLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(addressBookDidChange),
name: NSNotification.Name.CNContactStoreDidChange,
object: nil)
}
@objc func addressBookDidChange(notification: NSNotification){
print("notification: \(notification)")
}
}
但是 addressBookDidChange 从来没有被调用过,有人知道为什么吗?来自苹果:
联系人更改通知 保存成功后,联系人存储会向默认通知中心发布 CNContactStoreDidChange 通知。如果您缓存任何 Contacts 框架对象,您需要通过它们的标识符或使用最初用于获取它们的谓词重新获取这些对象,然后释放缓存的对象。请注意,缓存的对象是陈旧的,但不是无效的。
解决方案
推荐阅读
- flutter - 如何在另一个 ListView 内制作 ListView 以及当嵌套 ListView 到达边缘时,滚动主滚动颤动
- python - 蟒蛇 | 给定每个索引的特定数字范围,如何将主列表中的值分组到不同列表
- amazon-web-services - 由于任务失败或并发 HA_RESTORE_DB 请求而中止任务。同时将 S3 恢复到 RDS
- apache-zeppelin - 如何从主机中完全删除 Zeppelin (HDP 3.0.1)
- forms - 关于 Timer Tick 事件触发器的 C++/CLI 问题
- prolog - 序言中给定数字的素数列表与基础知识
- mysql - 数据截断:不正确的日期时间值:
- typescript - TypeScript - 为什么设置为已定义对象的静态属性在编译时未知?
- swift - 没有待激活的快照。SDK 名称:app_measurement
- msbuild - 为什么“无法在 Ubuntu 代理而不是 Windows 代理上找到程序集“System.IdentityModel.Services”?