我知道ios swift有一个Contacts Framework,我可以在其中获取联系人,但我找不到任何方法来获取所有联系人,我可以访问该数组中的每个联系人.所有获取联系人的方法似乎都需要某种条件.有什么方法可以让我把所有的联系人联系在一起吗?

谢谢

推荐答案

对Contact Framework问题的许多回答都建议迭代各种容器(帐户).然而,苹果的文档将"统一联系人"描述为

代表同一个人的不同帐户中的联系人可能会自动链接在一起.链接联系人在OS X和iOS应用程序中显示为统一联系人.统一联系人是合并到一个联系人中的一组链接联系人的内存临时视图.

默认情况下,联系人框架返回统一联系人.每个获取的统一联系人(CNContact)对象都有自己的唯一标识符,该标识符不同于链接联系人集中任何单个联系人的标识符.统一联系人的重新蚀刻应使用其标识符完成.

因此,在单个数组中获取联系人列表(部分,基于键)的最简单方法如下:

      var contacts = [CNContact]()
    let keys = [CNContactFormatter.descriptorForRequiredKeys(for: .fullName)]
    let request = CNContactFetchRequest(keysToFetch: keys)
    
    let contactStore = CNContactStore()
    do {
        try contactStore.enumerateContacts(with: request) {
            (contact, stop) in
            // Array containing all unified contacts from everywhere
            contacts.append(contact)
        }
    }
    catch {
        print("unable to fetch contacts")
    }

Swift相关问答推荐

在swift静态var扩展中,如何或可以访问和返回具体类?

如何在HStack中均匀分布视图?

如何防止自动状态恢复,如果应用程序被启动打开特定的文档?

通过SwiftUI中的列表 Select 从字典中检索值

在SwiftUI中判断选项时避免重复查看

通常从数组调用的SWIFT静态协议函数

我可以在预览中通过拖动手势跳转,但在模拟器中失败

我正在try 通过代码设置节中页眉和页脚的高度,但它不起作用

RxSwift .debounce,.throttle用于分页

在SWIFTUI&39;S视图修改器中使用等待关键字

在表单中对齐文本框

在 RealityKit 中查找特定模型的 findEntity(named:) 方法的替代方法?

数组中某些元素的总和

关于变量的视图的 SwiftUI 生命周期

签署GoogleSignIn-GoogleSignIn需要开发团队

用户输入以更改通过点击生成的形状大小

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

如何在 SwiftUI 中通过按钮点击一次为一个更改设置动画?

Vapor, fluent 使用 PostgreSQL 保存/创建复杂模型

Swift if 语句 - 多个条件用逗号分隔?