iOS9 联系人框架缺少 phone 号码标签?
iOS9 Contacts Framework missing phone number labels?
我正在实施一个仅支持 iOS9+ 的新 iOS 应用程序。因此,我们正在使用新的联系人框架来访问存储在设备上的联系人的 phone 号码。
CNPhoneNumber 定义了不同类型 phone 号码的标签,但它包含的类型列表比实际的 iOS 联系人屏幕小得多。例如,在我的 iPhone 上,我可以将 "Work" 类型的号码添加到联系人,但 SDK 中没有相应的 CNLabelPhoneNumberWork 标签。我是在看错地方还是就是这样?联系人可能有一堆我无法识别的数字,除非我将 Apple 的“$!!$”字符串硬编码到我的应用程序?
据我所知,CNPhoneNumber 只提供这些标签:
@available(iOS 9.0, *)
public let CNLabelPhoneNumberiPhone: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberMobile: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberMain: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberHomeFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberWorkFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberOtherFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberPager: String
当我将号码添加到我的联系人时,可用类型列表要长得多。
你是正确的,因为这些应该是 phone 数字标签的唯一预定义标签。
但是,如 Apple 文档中所述:Phone 数字标签
These constants are predefined labels that can be used in a CNLabeledValue
object having a CNPhoneNumber
value.
你仍然会从 CNLabeledValue
label
属性 得到一个 NSString*
(注意 而不是 enum
) ,它将包含联系人中显示的任何内容。因此,请做好准备,您可能还会获得由 "Custom Labels" 选项创建的奇数输入用户。
关于 "Contacts may have a bunch of numbers that I am unable to identify unless I hardcode Apple's "$!!$" 字符串到我的应用程序的问题?"
答案是否
phoneNumbers
一个 CNContact
:
This property is an array of CNLabeledValue
objects, each of which has a label and a CNPhoneNumber
value.
当你遍历它时,.label
会给你类似 'Work' 的东西,而 .value
会给出你想要的实际数字。
编辑:
有趣的是,在Contacts Framework Reference中出现了CNLabelHome
和CNLabelWork
,在CNLabeledValue
Class中出现了"Generic Labels"个常量。
我正在实施一个仅支持 iOS9+ 的新 iOS 应用程序。因此,我们正在使用新的联系人框架来访问存储在设备上的联系人的 phone 号码。
CNPhoneNumber 定义了不同类型 phone 号码的标签,但它包含的类型列表比实际的 iOS 联系人屏幕小得多。例如,在我的 iPhone 上,我可以将 "Work" 类型的号码添加到联系人,但 SDK 中没有相应的 CNLabelPhoneNumberWork 标签。我是在看错地方还是就是这样?联系人可能有一堆我无法识别的数字,除非我将 Apple 的“$!!$”字符串硬编码到我的应用程序?
据我所知,CNPhoneNumber 只提供这些标签:
@available(iOS 9.0, *)
public let CNLabelPhoneNumberiPhone: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberMobile: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberMain: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberHomeFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberWorkFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberOtherFax: String
@available(iOS 9.0, *)
public let CNLabelPhoneNumberPager: String
当我将号码添加到我的联系人时,可用类型列表要长得多。
你是正确的,因为这些应该是 phone 数字标签的唯一预定义标签。
但是,如 Apple 文档中所述:Phone 数字标签
These constants are predefined labels that can be used in a
CNLabeledValue
object having aCNPhoneNumber
value.
你仍然会从 CNLabeledValue
label
属性 得到一个 NSString*
(注意 而不是 enum
) ,它将包含联系人中显示的任何内容。因此,请做好准备,您可能还会获得由 "Custom Labels" 选项创建的奇数输入用户。
关于 "Contacts may have a bunch of numbers that I am unable to identify unless I hardcode Apple's "$!!$" 字符串到我的应用程序的问题?"
答案是否
phoneNumbers
一个 CNContact
:
This property is an array of
CNLabeledValue
objects, each of which has a label and aCNPhoneNumber
value.
当你遍历它时,.label
会给你类似 'Work' 的东西,而 .value
会给出你想要的实际数字。
编辑:
有趣的是,在Contacts Framework Reference中出现了CNLabelHome
和CNLabelWork
,在CNLabeledValue
Class中出现了"Generic Labels"个常量。