我想从iOS 9上的CNContact获取国家代码和电话号码.我尝试过很多东西,但找不到办法.我取得的最好成绩是打印:
<CNPhoneNumber: 0x7f886389a140: countryCode=us, digits=5555648583>
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
print(contact.phoneNumbers.count)
for number: CNLabeledValue in contact.phoneNumbers {
print(number.value)
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是countryCode和数字的值.有任何想法如何在Swift中访问它们?谢谢!
fpg*_*503 10
不幸的是,由于他们是私人的,你无法得到他们.
let numberValue = number.value
let countryCode = numberValue.valueForKey("countryCode") as? String
let digits = numberValue.valueForKey("digits") as? String
Run Code Online (Sandbox Code Playgroud)
这有效,但如果您在此行中执行某些操作,您的应用很可能会被拒绝.
你可以看到你可以在这里使用的所有好东西.
如果您不打算将应用程序上传到商店,那么上面的解决方案就可以了,否则我会坚持使用某种正则表达式,因为它知道将来会破坏:
countryCode=(\w{2}),.*digits=(.+)>$
Run Code Online (Sandbox Code Playgroud)
小智 5
Objective-C:
[number.value valueForKey:@"countryCode"]
Run Code Online (Sandbox Code Playgroud)
Swift:
number.value.valueForKey("countryCode") as? String
Run Code Online (Sandbox Code Playgroud)
valueForKey 不是私有的,您的应用程序不会被拒绝。