我似乎无法弄清楚如何从联系人中获取用户“我的卡”。我正在使用 swift 开发本机 Mac 应用程序。
问问题
1962 次
2 回答
0
它不是来自(MacOS 10.11 的全新版本)CNContact,而是 MacOS 的ABAddressBook 框架有一个调用方法me()
,该方法将返回登录用户的 ABPerson 记录。
要获得等效的 vCard,请调用vCardRepresentation()
该 ABPerson 对象。
上述解决方案的好处是它可以在较旧的 MacOS 版本(例如 MacOS 10.9、10.10)上运行。
Marek 指出了unifiedMeContactWithKeysToFetch:
CNContactStore 中的 API,但在我输入这个答案时,它只记录在 SDK 的 .h 头文件中,而不是CNContactStore 文档中。
于 2015-10-23T03:23:14.413 回答
0
对此有一个 CNContact api,但它仅在 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]
于 2017-08-05T00:33:38.223 回答