iPhoneの連絡先アプリに保存されている名前やメールアドレスをString型で取り出して、cellに表示したいのですが上手くできません。
iPhoneの連絡先アプリに保存されている名前やメールアドレスをString型で取り出して、cellに表示しようとしています。そのためには連絡先にアクセスする必要があり、Contacts.frameworkを追加しなければならないことはわかりましたが、そこからどんなクラスやプロパティを使えば名前やメールアドレスをString型で取り出せるのかが分かりません。
発生している問題・エラーメッセージ
連絡先のデータをString型で取り出す為のクラスやプロパティが分からない
該当のソースコード
Swift
1import UIKit 2import Contacts 3 4class ViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource { 5 6 var name = [String]() 7 8 //cellの数は連絡先から取り込んだ人の数 9 @IBOutlet weak var TableView: UITableView! 10 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 11 return name.count 12 } 13 14 //cellに表示するのは取り込んだ人の名前 15 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 16 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 17 cell.textLabel?.text = name[indexPath.row] 18 return cell 19 } 20 21//以下に電話帳から名前やメールアドレスをString型で取り出してnameに代入したいが分からない
試したこと
webに記載されていたあまり意味のわかっていない以下のソースコードを使用してみましたが、保存されている型がCNContactである為name = peopleのようには代入できませんでした。
func getContacts() {
// 連絡先を取得するクラスのインスタンスを作成
let store = CNContactStore.init()
// 連絡帳の1つ1つのデータを収める空の配列 people を準備
var people = 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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/22 13:52
退会済みユーザー
2018/10/22 14:59
2018/10/22 15:39