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)")
}
2条答案
按热度按时间9vw9lbht1#
它不是来自(MacOS 10.11的全新版本)CNContact,而是MacOS的ABAddressBook框架有一个名为
me()
的方法,该方法将返回登录用户的ABPerson记录。要获得等效的vCard,请在ABPerson对象上调用
vCardRepresentation()
。上述解决方案的好处是它可以在旧的MacOS版本(eidogg. MacOS 10. 9,10. 10)上工作。
Marek指出了CNContactStore中的
unifiedMeContactWithKeysToFetch:
API,但在我键入此答案时,它只记录在SDK的.h头文件中,而没有记录在the CNContactStore documentation中。ccrfmcuu2#
有一个CNContact API可以实现这一点,但它只在macOS 10.11+中可用,而在迄今为止的任何版本的iOS中都不可用。
(For在iOS中,恢复到ABAddressBook并不能解决问题,因为
me()
方法同样只适用于MacOS,尽管早在macOS 10.2+中就有了。)当然,也可以获取其他密钥: