2012-12-26 43 views
2

我開始爲我的應用程序開發一個設置頁面。通訊錄檢索移動,工作和iPhone電話號碼

在這個頁面上,用戶可以點擊一個「+」按鈕,這將打開ABPeoplePickerNavigationController。點擊聯繫人後,設置頁面上的文本字段將被正確填充所選用戶的正確數據。

我明白,如果我想找回人的工作電子郵件,它是:

​​

和家庭這將是:

NSString *homeEmail = (__bridge NSString *)ABMultiValueCopyValueAtIndex(emails, 0); 

但據檢索不同類型的電話號碼,我被卡住了。

如果有人能告訴我如何獲得不同類型的電話號碼,希望與我收到這兩封電子郵件的方式類似,我將不勝感激。

回答

7

那麼,首先,你明白錯誤 - 不能保證用戶的家庭電子郵件地址是#0。如果你只有只有有該用戶的工作電子郵件?然後將在插槽你想要什麼0

ABMultiValueCopyLabelAtIndex(),它與命名常量使用時,會告訴你哪個是哪個:

ABPersonRef person = ...; 
ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty); 
if (phoneNumbers) { 
    CFIndex numberOfPhoneNumbers = ABMultiValueGetCount(phoneNumbers); 
    for (CFIndex i = 0; i < numberOfPhoneNumbers; i++) { 
     CFStringRef label = ABMultiValueCopyLabelAtIndex(phoneNumbers, i); 
     if (label) { 
      if (CFEqual(label, kABWorkLabel)) { 
       /* it's the user's work phone */ 
      } else if (CFEqual(label, kABHomeLabel)) { 
       /* it's the user's home phone */ 
      } else if (...) { 
       /* other specific cases of your choosing... */ 
      } else { 
       /* it's some other label, such as a custom label */ 
      } 
      CFRelease(label); 
     } 
    } 
    CFRelease(phoneNumbers); 
} 
+0

啊,謝謝了!將更多地閱讀文檔。 – doc92606

+0

所以在「if()括號內」我會把「self.workTextField.text =(__bridge NSString *)(kABWorkLabel);那是否正確? – doc92606

+0

如果你想顯示一個代表」work「標籤的非本地化字符串,那麼是的,雖然這可能不是你想要做的 –

相關問題