Swift 从iOS 9中的联系人框架访问电话号码
我无法打开Swift 从iOS 9中的联系人框架访问电话号码,swift,ios9,Swift,Ios9,我无法打开CNLabeledValue以获取电话号码。这是我的代码(Swift),我现在得到的是。我只需要访问数字值,所以我正在尝试在result.phoneNumbers{}中的中打印它 lazy var contacts: [CNContact] = { let contactStore = CNContactStore() let keysToFetch = [ CNContactFormatter.descriptorForRequ
CNLabeledValue
以获取电话号码。这是我的代码(Swift),我现在得到的是
。我只需要访问数字
值,所以我正在尝试在result.phoneNumbers{}中的中打印它
lazy var contacts: [CNContact] = {
let contactStore = CNContactStore()
let keysToFetch = [
CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),
CNContactPhoneNumbersKey]
// Get all the containers
var allContainers: [CNContainer] = []
do {
allContainers = try contactStore.containersMatchingPredicate(nil)
} catch {
print("Error fetching containers")
}
var results: [CNContact] = []
// Iterate all containers and append their contacts to our results array
for container in allContainers {
let fetchPredicate = CNContact.predicateForContactsInContainerWithIdentifier(container.identifier)
do {
let containerResults = try contactStore.unifiedContactsMatchingPredicate(fetchPredicate, keysToFetch: keysToFetch)
for result in containerResults {
for number in result.phoneNumbers {
// WHAT SHOULD I PRINT HERE?????
print(number.value)
}
}
results.appendContentsOf(containerResults)
} catch {
print("Error fetching results for container")
}
}
return results
}()
CNPhoneNumber
的属性stringValue
是格式化的数字。如果您不想使用诸如“-”、“(”或“)”之类的符号,您只需要进行一些进一步的字符串装饰
应打印(即默认联系人Anna Haro):首页555-522-8243
然后,您可以按照您想要的方式格式化“stringValue”
for number in result.phoneNumbers {
guard let numberValue = number.value as? CNPhoneNumber else {
continue
}
print(numberValue)
print(String(numberValue.stringValue.characters.filter({ !["-", "(", ")"].contains($0) })))
}
if contact.isKeyAvailable(CNContactPhoneNumbersKey) {
for phoneNumber in contact.phoneNumbers {
let label = CNLabeledValue.localizedStringForLabel(phoneNumber.label)
let phone = phoneNumber.value as! CNPhoneNumber
print(" \(label) \(phone.stringValue)")
}
}