2017-02-22 43 views
1

Попытка безуспешно получить контактный контакт с идентификатором контакта. Я хочу вернуть контакт, а затем использовать связанное с ним изображение. Я получаю нулевой матч. Спасибо. Это код, который я получил от демо, я своего рода новым для программированияSwift Использование структуры контактов, поиск по идентификатору в соответствии с

import Contacts 

var contact = CNContact() 
var contactStore = CNContactStore() 

let foundContact = getContactFromID("94AAD3B1-E9E1-48C9-A796-F7EC1014230A") 

func getContactFromID(contactID: String) -> CNContact { 

    AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in 
     if accessGranted { 

      let predicate = CNContact.predicateForContactsWithIdentifiers([contactID]) 

      let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactImageDataAvailableKey] 

      var contacts = [CNContact]() 
      var message: String! 

      let contactsStore = AppDelegate.getAppDelegate().contactStore 

      do { 
       contacts = try contactsStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keys) 

       if contacts.count == 0 { 
        message = "No contacts were found matching the given name." 
       } 
      } 
      catch { 
       message = "Unable to fetch contacts." 
      } 


      if message != nil { 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        Utility.showAlert(nil, message: message) 
       }) 
      } else { 

       dispatch_async(dispatch_get_main_queue(), {() -> Void in 

        self.contact = contacts[0] 

        print("self.contact: \(self.contact)") 

       }) 
      } 
     } 
    } 

    return self.contact 
} 
+0

Я решил это :), я удалил файл dispatch_async, теперь работает: здесь фиксированный код. – Mike

ответ

2

Я решил это :), я удалил dispatch_async материал, теперь работает: здесь фиксируется код.

func getContactFromID(contactID: String) -> CNContact { 

     AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in 
      if accessGranted { 

       let predicate = CNContact.predicateForContactsWithIdentifiers([contactID]) 

       let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactImageDataKey, CNContactImageDataAvailableKey] 

       var contacts = [CNContact]() 
       var message: String! 

       let contactsStore = AppDelegate.getAppDelegate().contactStore 

       do { 
        contacts = try contactsStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keys) 

        if contacts.count == 0 { 
         message = "No contacts were found matching the given name." 
        } 
       } 
       catch { 
        message = "Unable to fetch contacts." 
       } 

       self.contact = contacts[0] 
      } 
     } 
     return self.contact 
    } 
+0

Свяжитесь с символом firat, чтобы начать ... этот тип кода обеспечивает PLZ .. –