- (void)viewDidLoad {
[super viewDidLoad];
self.givenName = [[NSMutableArray alloc]init];
NSArray *KeysToFetch = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey ];
NSString *containerId = [[[CNContactStore alloc]init]defaultContainerIdentifier];
NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
_contacts = [[[CNContactStore alloc]init]unifiedContactsMatchingPredicate:predicate keysToFetch:KeysToFetch error:nil];
for (CNContact *c in _contacts) {
[_givenName addObject:c.givenName];
NSLog(@"%@", c.phoneNumbers);
}
}
嗨,我怎样才能访问'数字'值?当我做一个NSLog的电话号码'我在控制台上得到这个:
2015-10-19 12:33:41.423 testContacts[7064:2001002] (
"<CNLabeledValue: 0x7b72eed0: identifier=A73ABAA0-7698-47D7-A2BD-630E04C0C811, label=_$!<Mobile>!$_, value=<CNPhoneNumber: 0x7b734db0: countryCode=us, digits=8885555512>>",
"<CNLabeledValue: 0x7b72eb80: identifier=BC927A1D-AA98-4E67-82A9-BB5AD09A6CAE, label=_$!<Home>!$_, value=<CNPhoneNumber: 0x7b72ecd0: countryCode=us, digits=8885551212>>"
答案 0 :(得分:9)
如果电话号码已使用1 (234) 456-78
等电话号码进行本地化,则stringValue会返回该字符串。
要获得数字,正确的代码(在Swift中)是
(contact.phoneNumbers[0].value as! CNPhoneNumber).valueForKey("digits") as! String
答案 1 :(得分:3)
数字是私有变量。 获取电话号码:
CNLabeledValue<CNPhoneNumber*>* labeledValue = contact.phoneNumbers[0];
NSString *phone = labeledValue.value.stringValue;
E.g。获得手机号码:
// get mobile
NSString *phone = nil;
for (CNLabeledValue<CNPhoneNumber*>* labeledValue in contact.phoneNumbers)
{
if ([labeledValue.label isEqualToString:CNLabelPhoneNumberMobile])
{
phoneNumber = labeledValue.value.stringValue;
break;
}
}
答案 2 :(得分:1)
这在Swift 2.1中对我有用。 / Xcode 7.2。和iOS 9.2.1。
import ContactsUI
导入文件底部的联系人框架
这是我的例子:
let contacts = XXXContactsAccessManagerM.sharedContacts.getAll()
将此代码添加到您正在其中工作的班级Model
或ViewController
for var ctcCtr = 0 ; ctcCtr < contacts.count ; ctcCtr++
{
let contact = contacts[ctcCtr]
let phoneNumbers = contact.phoneNumbers
for var phnCtr = 0 ; phnCtr < phoneNumbers.count ; phnCtr++
{
let phoneNumberLabel = phoneNumbers[phnCtr]
let phoneNumber = (phoneNumberLabel.value as! CNPhoneNumber).valueForKey("digits") as! String
print(phoneNumber)
}
}
我有一个正常的电话号码,我在电话簿097XXXXXXX
中编写的确切方式等等......(不包括(XXX)和XXX-XXX)
答案 3 :(得分:0)
使用KPKContacts包很简单,就像调用一样
contact.firstNumberAvailable()
返回String值
或者你可以contact.numbers.first!.number
答案 4 :(得分:0)
此代码非常有助于在swift 3.1中获取电话号码值和电话号码标签
RelativeLayout