2015-09-09 3 views
10

に連絡先の完全な名前を取得する方法:今、私の携帯電話から連絡先を取得するために、このコードを使用していスウィフト

ここ
var addressBookReff: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue() 
    let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookReff).takeRetainedValue() 
    for person in people{ 
     if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String { 
      let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue() 
      if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String { 
       self.arrOfDictContacts.addObject(["\(name)":"\(number)"]) 
      } 
     } 
    } 

、最初の名前だけを取得するためにkABPersonFirstNamePropertyを使用しています。

私は連絡先の完全な名前を取得したい!この質問は簡単であり、多くの答えを持っている場合は

私が使用している場合は、kABPersonCompositeNameFormatFirstNameFirstは、Int is not convertible toABPropertyId

恩赦私のようなエラーを取得しています私は、余分な機能を呼び出したいいけないと、私はそれらのいずれかが私のために働いて見つけることができます。

どのようにしてフルネームを取得して辞書に追加することができますか arrOfDictContacts?アドレス帳のAPIで

答えて

21

、あなたは次のコードで複合/フルネームを取得できます(iOS版9+用)連絡先APIで

let name = ABRecordCopyCompositeName(person).takeRetainedValue() 

、あなたはこのコードを使用することができます:

let name: String? = CNContactFormatter.stringFromContact(contact, style: .FullName) 
+0

ここでは「レコード」は何ですか?上のコードで – AAA

+0

@AAAの場合は、 "person"になります。 – erdekhayser

+0

はい、私はあなたの答えを編集し、それは動作します:) – AAA

関連する問題