我似乎想不出如何从通讯录中获取用户的“我的卡”。我正在使用swift开发一个原生Mac应用程序。
发布于 2015-10-23 11:23:14
它不是来自( MacOS 10.11的全新版本) CNContact,而是MacOS的ABAddressBook framework has a method called me(),它将返回登录用户的ABPerson记录。
并获得与vCard等效的call vCardRepresentation() on that ABPerson object。
上述解决方案的优点在于,它可以在较早的MacOS版本(例如MacOS 10.9、10.10)上运行。
Marek指出了CNContactStore中的SDK,但在我输入这个答案的时候,它只记录在unifiedMeContactWithKeysToFetch:的.h头文件中,而不是the CNContactStore documentation中。
发布于 2017-08-05 08:33:38
有一个CNContact接口可以做到这一点,但它只在macOS 10.11+中可用,而不是在任何最新版本的iOS中。
(对于iOS,恢复到ABAddressBook并不能解决问题,因为me()方法同样只适用于MacOS,尽管最早可以追溯到macOS 10.2+。)
import Contacts
let nameKeys = [
CNContactNamePrefixKey,
CNContactGivenNameKey,
CNContactMiddleNameKey,
CNContactFamilyNameKey,
CNContactNameSuffixKey,
] as [CNKeyDescriptor]
do {
let contactStore = CNContactStore()
let me = try contactStore.unifiedMeContactWithKeys(toFetch: nameKeys)
} catch let error {
print("Failed to retreive Me contact: \(error)")
}当然,还可以获取额外的密钥:
let allContactKeys = [
CNContactNamePrefixKey,
CNContactGivenNameKey,
CNContactMiddleNameKey,
CNContactFamilyNameKey,
CNContactNameSuffixKey,
CNContactOrganizationNameKey,
CNContactDepartmentNameKey,
CNContactJobTitleKey,
CNContactBirthdayKey,
CNContactNicknameKey,
CNContactNoteKey,
CNContactNonGregorianBirthdayKey,
CNContactPreviousFamilyNameKey,
CNContactPhoneticGivenNameKey,
CNContactPhoneticMiddleNameKey,
CNContactPhoneticFamilyNameKey,
CNContactImageDataKey,
CNContactThumbnailImageDataKey,
CNContactImageDataAvailableKey,
CNContactTypeKey,
CNContactPhoneNumbersKey,
CNContactEmailAddressesKey,
CNContactPostalAddressesKey,
CNContactDatesKey,
CNContactUrlAddressesKey,
CNContactRelationsKey,
CNContactSocialProfilesKey,
CNContactInstantMessageAddressesKey,
] as [CNKeyDescriptor]https://stackoverflow.com/questions/33291257
复制相似问题