当前位置: 首页 > 面试题库 >

在ios Swift中获取所有联系人?

孙钱青
2023-03-14
问题内容

我知道ios swift有一个Contacts
Framework
,可以在其中获取联系人,但是找不到任何方法可以一起获取所有联系人,而我可以从该数组访问每个联系人。所有用于获取联系人的方法似乎都需要某种条件。有什么方法可以将所有联系人聚集在一起?

谢谢


问题答案:

有关Contact Framework问题的许多答案都建议对各种容器(帐户)进行迭代。但是,Apple文档将“统一联系人”描述为

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

默认情况下,Contacts框架返回统一的联系人。每个提取的统一联系人(CNContact)对象都有其自己的唯一标识符,该标识符不同于链接的联系人集中的任何单个联系人的标识符。应使用其标识符对统一联系人进行重新提取。
资源

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

    var contacts = [CNContact]()
    let keys = [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName)]
    let request = CNContactFetchRequest(keysToFetch: keys)

    do {
        try self.contactStore.enumerateContactsWithFetchRequest(request) {             
            (contact, stop) in
            // Array containing all unified contacts from everywhere
            contacts.append(contact)
        }
    } 
    catch {
        print("unable to fetch contacts")
    }


 类似资料:
  • 问题内容: 是否可以在一个查询中完成? 据我所知sim联系人的内容uri是 问题答案: 这很容易!:)

  • 我发现的另一件事是,似乎Javers从我的连接池(通过Spring DataSourceBuilder创建)中获取了所有可用的连接。我没有使用Hibernate/JPA,只是通过JdbcTemplate直接使用JDBC,主要是MyBatis用于实体查询。 我为Javers向ConnectionProvider添加了一条日志记录语句,在应用程序开始查询模式时,它会拉出4个连接来检查每个表,然后即使在

  • 问题内容: 我想获取联系人姓名,但无法。看完这个答案后,我尝试使用family,给定的和显示的来获取名称,但没有任何效果 / 问题答案: 尝试以下代码以获取特定号码的联系方式 更多详细信息请参见下面的链接https://tausiq.wordpress.com/2012/08/23/android-get-contact- details-id-name-phone-photo/

  • 问题内容: 您可以使用coeff()获得特定项的系数; 在这里,我想提取x,x ** 2(等等)的所有系数,例如; 有一个方法as_coefficients_dict(),但是这似乎不符合我想要的方式。 问题答案: 最简单的方法是使用

  • 本文向大家介绍Powershell获取系统中所有可停止的服务,包括了Powershell获取系统中所有可停止的服务的使用技巧和注意事项,需要的朋友参考一下 适用于PS3.0及以后版本。 Get-Service能够显示你电脑上所有已安装的服务。可是没有哪个参数是获取仅运行或停止的服务。 配合简单的Where-Object语句,才可以解决这个问题。通常代码如下: 基本上,Where-Object可以获

  • 本文向大家介绍Android获取手机联系人信息,包括了Android获取手机联系人信息的使用技巧和注意事项,需要的朋友参考一下 Android如何获取手机联系人信息,本文为大家揭晓。 获取手机联系人信息步骤: 1、获取 ContentResolver ContentResolver resolver = getContentResolver(); 2、resolver.query(*)查询信息 查