2015-10-22 50 views
4

我似乎無法弄清楚如何從聯繫人中抓取用戶「我的名片」。我正在開發一個使用swift的本地Mac應用程序。Swift搶「我的名片」CNContact

+1

您正在尋找CNContactStore @selector(unifiedMeContactWithKeysToFetch:錯誤:) –

回答

0

它不是來自(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中的unifiedMeContactWithKeysToFetch: API,但在輸入此答案時,它只記錄在SDK中的.h頭文件中,而不是在the CNContactStore documentation中。

+0

CNContactStore是從哪裏獲取CNContact的地方。還有「我」的聯繫方式。基本上,如果你不保存聯繫人,那麼你的應用會崩潰,但這是一個不同的話題 –

+0

感謝注意@marekh;我今天在Google上看到的這個API只有5個點擊。 –

+1

如果它在頭文件中,您可以使用它。有時文檔滯後於頭文件。 (試着找到Core Audio的功能參考文檔,繼續,我敢。) –

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] 
+0

它是可移動的應用程序? –

+0

沒有。不幸的是,在iOS上不支持。 –