1
我正試圖在地址簿中找到聯繫人的家庭電話號碼。通過閱讀他們,我不能告訴這是 -如何在iOS上的通訊錄中獲取某人的家庭電話號碼?
const ABPropertyID kABPersonPhoneProperty;
const CFStringRef kABPersonPhoneMobileLabel;
const CFStringRef kABPersonPhoneIPhoneLabel;
const CFStringRef kABPersonPhoneMainLabel;
const CFStringRef kABPersonPhoneHomeFAXLabel;
const CFStringRef kABPersonPhoneWorkFAXLabel;
const CFStringRef kABPersonPhoneOtherFAXLabel;
const CFStringRef kABPersonPhonePagerLabel;
首先,這些常量的命名是奇怪的:要做到這一點,我的電話號碼的標籤,所有的possible labels比較非傳真家庭電話標籤。那麼,我只需要測試它們,然後使用排除過程。
NSString* phoneNumber = nil;
// record is an ABRecordRef
ABMultiValueRef phoneNumbers = ABRecordCopyValue(
record,
kABPersonPhoneProperty
);
if (ABMultiValueGetCount(phoneNumbers) > 0) {
CFStringRef phoneLabelRef = ABMultiValueCopyLabelAtIndex(phoneNumbers, 0);
NSString* phoneLabel = (__bridge_transfer NSString*)phoneLabelRef;
NSLog(@"phone label: %@", phoneLabel);
NSLog(@"phone is mobile: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneMobileLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is main: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneMainLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is iPhone: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneIPhoneLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is home fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneHomeFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is work fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneWorkFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is other fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneOtherFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is pager: %d", CFStringCompare(phoneLabelRef, kABPersonPhonePagerLabel, 0) == kCFCompareEqualTo);
}
下面是Simulator中預先加載的兩個聯繫人的打印輸出。別擔心,所有聯繫信息都是假的。
phone label: _$!<Mobile>!$_
phone is mobile: 1
phone is main: 0
phone is iPhone: 0
phone is home fax: 0
phone is work fax: 0
phone is other fax: 0
phone is pager: 0
FIRST = Kate, LAST = Bell, PHONE = (555) 564-8583, EMAIL = [email protected]
凱特貝爾沒有問題。我可以檢測到她的手機是移動的。但是,安娜·哈羅有個問題。由於沒有任何標籤匹配,我無法弄清楚她有什麼類型的電話號碼。
phone label: _$!<Home>!$_
phone is mobile: 0
phone is main: 0
phone is iPhone: 0
phone is home fax: 0
phone is work fax: 0
phone is other fax: 0
phone is pager: 0
FIRST = Anna, LAST = Haro, PHONE = 555-522-8243, EMAIL = [email protected]
我不希望從字面上匹配字符串_%!<Home>!$_
因爲精確值可能與iOS的未來版本中改變。