質問: [CNContact]() do { // 連絡先データベースからここでは苗字・名前・電話番号情報を取得 try store.enumerateContacts(with: CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactEmailAddressesKey as CNKeyDescriptor])) {(contact, cursor) -> Void in// 電話番号が保持されている連絡先だったら if (!contact.phoneNumbers.isEmpty) {// 取得したデータをpeople に収める people.append(contact) } } } catch{ print("連絡先データの取得に失敗しました") } // peopleに取得した連絡先の数だけループ for humen in people{ // 連絡先が保持している電話番号の数だけループ for number in humen.phoneNumbers { // 「電話:電話番号 名前:苗字 ま前」のフォーマットで連絡先データが出力される print("電話:\((number.value as CNPhoneNumber).stringValue) 名前:\(humen.familyName) \(humen.givenName)") } } } ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 上記のコードで、`var people = CNContact この場合に、`people`の最初の連絡先の名字を取得するなら、以下のようにして取得できます。 ``` let human: CNContact = people[0] let familyName: String = human.familyName //名字 let givenName: String = human.givenName //名前 print("名前: \(familyName) \(givenName)") //"名前: 田中 太郎" ``` メールアドレスは、以下のようにして取得できます。 ``` let emailAddresses: [CNLabeledValue] = human.emailAddresses for emailAddress in emailAddresses { if let emailText = emailAddress.value as String { print("メール: \(emailText)") //"メール: hoge@sample.com" } } ``` CNContactから取得できる項目は、Apple Developer Documentation - CNContact (英語)で確認できます。 Xcodeでは、Optionキーを押しながらコード上のクラスをクリックすると、そのクラスの簡易説明を見ることができます。詳細が分からないクラスがあった場合、この機能が活用できるかもしれません。