2015-06-27 3 views
3

Я знаю, что это было предложено много, но я изо всех сил, чтобы найти полное решение и мало я нахожу в Objective CПолучение контактных имен и телефонных номеров в Swift

мне удалось получить это далеко

public static func refreshContacts(){ 
    let status = ABAddressBookGetAuthorizationStatus() 
    if status == .Denied || status == .Restricted { 
     // user previously denied, to tell them to fix that in settings 
     return 
    } 

    // open it 

    var error: Unmanaged<CFError>? 
    let addressBook: ABAddressBook? = ABAddressBookCreateWithOptions(nil, &error)?.takeRetainedValue() 
    if addressBook == nil { 
     println(error?.takeRetainedValue()) 
     return 
    } 

    // request permission to use it 

    ABAddressBookRequestAccessWithCompletion(addressBook) { 
     granted, error in 

     if !granted { 
      // warn the user that because they just denied permission, this functionality won't work 
      // also let them know that they have to fix this in settings 
      return 
     } 

     if let people = ABAddressBookCopyArrayOfAllPeople(addressBook)?.takeRetainedValue() as? NSArray { 
      for person in people{ 
       var name = //?????? 
       var phoneumber = //?????? 
      } 

     } 
    } 
} 

Если вы читаете комментарий, вы можете видеть, что есть одна точка, в которой я не слишком уверен, что делать Как я могу получить имя и номер телефона?

+0

Так что вам нужно - пример кода? Вот некоторые из них: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch18p713addressBook/ch31p973addressBook/ViewController.swift. Но имейте в виду, что это Swift 1.2 и iOS 8. В iOS 9 все это жаль наконец, будут удалены. – matt

+0

@matt спасибо доброта. Это очень плохо, рамки. Есть ли у вас какие-либо ios9-примеры? Также exmalple вы опубликовали не имеет номера телефонов –

+0

Я показываю вам пример. Подумайте об этом и научитесь этому. Мне платят дополнительно, если вы хотите, чтобы я написал _your_ код _for_ вас! :) – matt

ответ

7

Я нашел решение

public static func refreshContacts(){ 
    let status = ABAddressBookGetAuthorizationStatus() 
    if status == .Denied || status == .Restricted { 
     // user previously denied, to tell them to fix that in settings 
     return 
    } 

    // open it 

    var error: Unmanaged<CFError>? 
    let addressBook: ABAddressBook? = ABAddressBookCreateWithOptions(nil, &error)?.takeRetainedValue() 
    if addressBook == nil { 
     println(error?.takeRetainedValue()) 
     return 
    } 

    // request permission to use it 

    ABAddressBookRequestAccessWithCompletion(addressBook) { 
     granted, error in 

     if !granted { 
      // warn the user that because they just denied permission, this functionality won't work 
      // also let them know that they have to fix this in settings 
      return 
     } 

     if let people = ABAddressBookCopyArrayOfAllPeople(addressBook)?.takeRetainedValue() as? NSArray { 
      for person in people{ 
       if let name = ABRecordCopyValue(person, kABPersonFirstNameProperty).takeRetainedValue() as? String { 
        println(name)//persons name 
       } 
       let numbers:ABMultiValue = ABRecordCopyValue(
        person, kABPersonPhoneProperty).takeRetainedValue() 
       for ix in 0 ..< ABMultiValueGetCount(numbers) { 
        let label = ABMultiValueCopyLabelAtIndex(numbers,ix).takeRetainedValue() as String 
        let value = ABMultiValueCopyValueAtIndex(numbers,ix).takeRetainedValue() as! String 
        println("Phonenumber \(label) is \(value)) 
       } 
      } 

     } 
    } 
} 

адаптированный https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch18p713addressBook/ch31p973addressBook/ViewController.swift

Смежные вопросы