自定义标记为 phone 的号码

A custom labeled phone number

Contacts Framework 提供了一种像这样的 phoneNumbers 标签:

CNLabelPhoneNumberiPhoneCNLabelPhoneNumberMainCNLabelPhoneNumberPager 等。

for contact in self.contact.phoneNumbers {
            if contact.label == CNLabelPhoneNumberiPhone {
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
                break
            }
        }

但它们是有限的。没有任何标签为 phoneNumbers 的自定义选项。我可以在 Contacts Framework 上显示标签为 phoneNumbers 的自定义吗?

` 如果 !self.contact.phoneNumbers.isEmpty {

        for contact in self.contact.phoneNumbers {

           switch contact.label {
            case CNLabelHome:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelWork:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelOther:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberMain:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberiPhone:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberMobile:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberPager:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberHomeFax:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberWorkFax:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            case CNLabelPhoneNumberOtherFax:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
            default:
                self.phoneNumberTextField.text = (contact.value as! CNPhoneNumber).stringValue
                break
            }
       }
  }

`

所以没有直接的方法来获取自定义标签编号,所以你可以这样做来获取自定义标签编号:-

if !contact.phoneNumbers.isEmpty {
  for number in contact.phoneNumbers {
      // This return All the phone Numbers
      if number.label == CNLabelPhoneNumberiPhone {
          //iPhone number.
      } else if number.label == CNLabelPhoneNumberMobile {
          //Mobile phone number.
      } else if number.label == CNLabelPhoneNumberMain {
          //Main phone number.
      } else if number.label == CNLabelPhoneNumberHomeFax {
          //Home fax number.
      } else if number.label == CNLabelPhoneNumberWorkFax {
          //Work fax number.
      } else if number.label == CNLabelPhoneNumberOtherFax {
        //Other fax number.
      } else if number.label == CNLabelPhoneNumberPager {
        //Pager phone number.
     } else {
        // Custome Phone Number
        // number.label -> to get custome label name
    }
  }
}

一个CNLabeledValuelabel属性其实就是一个字符串。它可能包含一个值,例如 DadApartment,或者在预定义标签常量的情况下,它等于 _$!<Main>!$__$!<Home>!$_,等等。因此,如果您给定 label 与您预定义的任何常量都不匹配,然后按原样显示字符串,因为这可能是自定义标签。