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

iOS 9:获取CNContact国家代码和电话号码

周朗
2023-03-14
问题内容

我想从iOS 9上的CNContact获取国家代码和电话号码。我尝试了很多事情,但找不到方法。我获得的最佳结果是打印:

<CNPhoneNumber: 0x7f886389a140: countryCode=us, digits=5555648583>

这是我的方法:

func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
    print(contact.phoneNumbers.count)
    for number: CNLabeledValue in contact.phoneNumbers {
        print(number.value)
    }
}

我想要的是countryCode和数字的值。有什么想法如何在Swift中访问它们吗?谢谢!


问题答案:

不幸的是,由于它们是私有的,您无法获得它们。

let numberValue = number.value

let countryCode = numberValue.valueForKey("countryCode") as? String
let digits = numberValue.valueForKey("digits") as? String

这行得通,但是如果您在此行中做某事, 您的应用很可能会被拒绝。

您可以在这里看到所有可以使用的好东西。

如果您不打算将应用程序上载到商店,则上述解决方案是可以的,否则我会坚持使用某种正则表达式,因为它知道将来可能会崩溃:

countryCode=(\w{2}),.*digits=(.+)>$


 类似资料:
  • 我可以在Android系统中检测来电,但问题是我想知道那个电话号码的国家代码,这样我就可以分析它是国家号码还是国际号码。我知道libphonenumber,但它需要事先知道地区代码才能获得国家代码,如示例所示 它已经知道把作为参数。但是我们不知道这个数字是否为我们所知,那么我们如何分析这个数字。

  • 我有这样一个字符串:33123456789(法语电话号码)。我想在不知道国家的情况下提取国家代码(33)。例如,如果我有另一部来自另一个国家的手机,它应该可以工作。我使用谷歌图书馆https://code.google.com/p/libphonenumber/. 如果我知道国家,那很酷,我可以找到国家代码: 但是我找不到一种在不了解国家的情况下解析字符串的方法。

  • 我的电话号码是字符串,如“91 96001 64500”(从google places API获取数据),我想提取电话号码(不带国家代码)以及国家代码,而不知道国家(国家可以是任何国家)。我怎样才能在弗利特做到这一点。 注意:已经有另一个完全相同的问题被问到,从电话号码[libphonenumber]中提取代码国家,但它是针对android的,我希望它是针对Flatter的。

  • 我需要在UITextField中显示电话号码格式作为占位符。我怎么能那样做? 对于国家选择,我使用下面提到的库,它提供了针对用户选择的国家的国旗和国家代码。 https://github.com/NikKovIos/NKVPhonePicker 选择国家后,我需要显示所选国家的电话号码格式,提交该电话号码时,我必须验证电话号码。 我还发现,第三方(PhoneNumberKit)的灵感来源于谷歌的l

  • 我看到了一些与我要求的相似的问题,但似乎没有什么符合要求的。 我处于需要处理通话记录并使用电话号码确定国家的位置。拨打的号码可以是任何国家,例如: 44 7899455120-英国 34 965791845-西班牙 355 788415235-阿尔巴尼亚 显然,如果所有的呼叫代码都是两位数的话,这个世界将是美好的,但事实并非如此。目前,我有一个数据库,里面有国家及其相关代码,为了匹配,我需要有效地

  • 我正在开发一个具有登录活动的应用程序,当用户登录时,它会自动将联系人从手机保存到服务器。这是可行的,但我有一个问题,当我保存号码时,它们是以用户在手机中输入的格式保存的。例如,如果用户输入此号码:15555555,则将按此方式保存,但如果用户输入此号码时没有国家代码,则显示为:5555555,没有1,或任何其他国家代码,具体取决于国家。 我想要的是返回我所有的联系人,他们的国家代码,甚至那些用户已