[英]Swift Fetching User's Contacts Phone Numbers
我目前正在使用 SwiftUI 项目,并试图获取用户联系人的电话号码。
我已经成功地收集了联系人并且可以打印他们的givenName
以及他们的familyName
,但是我在尝试使用联系人phoneNumbers
时遇到了问题。
这是用于打印givenName
的工作代码的核心:
store.enumerateContacts(with: request, usingBlock: {
(contact, stopPointer) in print(contact.givenName)
})
以https://stackoverflow.com/a/31615473/6642089为例,我尝试打印出联系人phoneNumbers
:
store.enumerateContacts(with: request, usingBlock: {
(contact, stopPointer) in contact.
for phone in contact.phoneNumbers {
var label = phone.label
if label != nil {
label = CNLabeledValue<CNPhoneNumber>.localizedString(forLabel: label!)
}
print(" ", label, phone.value.stringValue)
}
})
尝试遍历 contact.phoneNumbers 足以给我一个非常长的堆栈跟踪的以下错误:
连接到名为 com.apple.contactsd 的 pid 88497 上的服务:在调用消息“encodedContactsAndCursorForFetchRequest:withReply:”的回复块期间捕获异常。
忽略的异常:获取联系人时未请求属性。
问题出在我的CNContactFetchRequest
中。
最初,我只是询问联系人的名字。 它看起来像:
let keys = [CNContactGivenNameKey]
let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])
答案是这添加了我需要在我的请求中使用的额外密钥,如下所示:
let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]
let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.