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

如何在Swift中以字符串形式获取CNContact电话号码?

端木震博
2023-03-14
问题内容

我正在尝试检索所有联系人的姓名和电话号码,并将它们放入iOS中的Swift数组中。我到目前为止已经做到了:

func findContacts() -> [CNContact] {

    marrContactsNumber.removeAllObjects()
    marrContactsName.removeAllObjects()

    let store = CNContactStore()

    let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]

    let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)

    var contacts = [CNContact]()

    do {
        try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in
            contacts.append(contact)

            self.marrContactsName.addObject(contact.givenName + " " + contact.familyName)

            self.marrContactsNumber.addObject(contact.phoneNumbers)

            print(contact.phoneNumbers)
    }
    catch let error as NSError {
        print(error.localizedDescription)
    }

    print(marrContactsName.count)
    print(marrContactsNumber.count)

    return contacts
}

完成后,将完全marrContactsName包含我所有联系人姓名的数组。即“ John
Doe”。但是,marrContactsNumber返回一个值数组,例如

[<CNLabeledValue: 0x158a19950: identifier=F831DC7E-5896-420F-AE46-489F6C14DA6E,
label=_$!<Work>!$_, value=<CNPhoneNumber: 0x158a19640: countryCode=us, digits=6751420000>>,
<CNLabeledValue: 0x158a19a80: identifier=ECD66568-C6DD-441D-9448-BDEDDE9A68E1,
label=_$!<Work>!$_, value=<CNPhoneNumber: 0x158a199b0: countryCode=us, digits=5342766455>>]

我想知道如何仅将电话号码作为字符串值即“ XXXXXXXXXX”来检索。基本上,如何调用数字值。谢谢!


问题答案:

我找到了解决方案: (contact.phoneNumbers[0].value as! CNPhoneNumber).valueForKey("digits") as! String



 类似资料:
  • 获取对象的类名为,使用: 返回如下内容: 我正在寻找纯版本:。我如何得到一个清理过的类名字符串呢? 我发现了一些关于这个的问题,但没有真正的答案。难道一点都不可能吗?

  • 问题内容: 我从“联系人”中导入电话号码并保存在中。此字符串包含空格,我尝试使用方法将其删除: 这种方法行不通。 输出不变 日志 问题答案: 我怀疑您字符串中的空格字符实际上不是空格。请尝试在后面添加此代码,以查看字符串中字符的unicode标量值是什么: “((327)124-3503)”的预期输出为: 从您的评论中,您的空间值为160而不是32。您可以使用以下方法将其删除:

  • 问题内容: 我试图从给定的字符串中提取java中的电话号码,即电话号码可以在String中的任何地方,例如。现在我想在另一个String中提取此电话号码。 在使用 它会返回真还是假,但我没有获取提取的电话号码。 问题答案:

  • 问题内容: 说我有这个PHP代码: 然后,我需要一个这样的功能: 打印: 任何想法如何实现这一目标?在PHP中甚至有可能吗? 问题答案: 您可以使用get_defined_vars()来查找与您要查找其名称的变量具有相同值的变量的名称。显然,这并不总是可行的,因为不同的变量通常具有相同的值,但这是我想到的唯一方法。 编辑:get_defined_vars()似乎不能正常工作,它返回’var’,因为

  • 问题内容: 我想从iOS 9上的CNContact获取国家代码和电话号码。我尝试了很多事情,但找不到方法。我获得的最佳结果是打印: 这是我的方法: 我想要的是countryCode和数字的值。有什么想法如何在Swift中访问它们吗?谢谢! 问题答案: 不幸的是,由于它们是私有的,您无法获得它们。 这行得通,但是如果您在此行中做某事, 您的应用很可能会被拒绝。 您可以在这里看到所有可以使用的好东西。

  • 问题内容: 我一直在存储电话号码,所以我想在将电话号码打印为字符串时简单地添加连字符。 我尝试使用,但是不喜欢连字符。可能是因为它用于格式化十进制数字而不是long。 理想情况下,我也想在区号上加上括号。 正确的方法是什么? 问题答案: 这就是我最终这样做的方式: 我知道这不支持国际号码,但是我不是在编写“真实”应用程序,因此我对此并不担心。我只接受10个字符作为电话号码。我只是想以某种格式打印它