iOS swift : Get user selected phone number from CNContactProperty as a string

标签 ios swift string cncontactpicker

<分区>

正如标题所示,在我使用 swift 的 iOS 应用程序中,我有一个 CNContactProperty 对象,我想从中提取电话号码作为字符串。

在用户从中选择联系人后,CNContact 属性通过委托(delegate)协议(protocol)函数从标准 CNContactPickerViewController 返回。

当一个联系人有多个电话号码时,我希望能够从 CNContactProperty 中提取用户在联系人 View 中点击的电话号码。

我正在尝试做这样的事情:

 let myString = theCNContactProperty.value as! String

但是,这会因 (lldb) 错误而崩溃。我怀疑也许“值”属性不是我需要的?

我可以像这样检索任意数字:

let myString = contactProperty.contact.phoneNumbers[0].value.stringValue

返回联系人的第一个号码。但是,这不符合我的目的,因为我希望能够在联系人的号码超过 1 个时提取用户选择的特定号码。

我已经为此工作了几个小时,但无法弄清楚,如果你能给我任何帮助,我将不胜感激!

编辑:这不是所提供链接的副本。链接的问题是关于从联系人中检索所有号码,而不是专门选择的号码。这有很大的不同。

正确答案:

作为Mahdi Moqadasi 在评论中写道,正确答案是使用(contactProperty.value as?CNPhoneNumber).stringValue.
或者看下面的回答:
Extract email from CNContactProperty - iOS 9
iOS Objective C: Get user selected phone number from CNContactProperty as a string

最佳答案

所以你说你希望能够从 CNContactViewController 中获取用户选择的电话号码。

CNContactViewController 有一个委托(delegate)函数,它返回用户选择的键。这是函数:

optional func contactViewController(_ viewController: CNContactViewController, 
  shouldPerformDefaultActionFor property: CNContactProperty) -> Bool

在该函数中,您可以通过执行以下操作获取选定的电话号码:

let myString = property.identifier

此外,如果您在此函数中返回 false,则该操作不会发生,我认为这意味着它不会自动调用该号码。

关于iOS swift : Get user selected phone number from CNContactProperty as a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631312/

相关文章:

ios - 用于释放密码的 iPhone 内存管理(生产中的 Malloc Scribble?,用零填充释放内存?)

iOS Swift - 设置开始时间和结束时间(仅限 future 时间)UIDatePicker

ios - CMSampleBuffer 在 Swift 3 中从纵向旋转到横向

iphone - UITabbar 还使用额外的 UIButton [hell] swift 4 更改选项卡

java - 我将如何在 Java 中拆分一个句子

php 在字符串中找到一些文本(如果它在那里)

ios - Func 不会停止运行

swift - Spritekit 中的 Pan Gesture Recognizer 移动对象

ios - 如果像素是透明的,如何制作不响应触摸的 SKSpriteNode?

python - .format() 使用 {0 :g} to remove trailing zeros 时返回 ValueError