2016-09-25 6 views
6

gewünschte VerhaltenErhalten Bild von Kontakt Swift

Ich frage mich, wie man am besten

die folgenden in Swift tun
  1. Anzeige einer Kontakt Picker Fenster
  2. erlauben es einem Benutzer, einen Kontakt zu wählen
  3. Ein Bild von diesem Kontakt holen.

Forschung

diese Frage in der Erforschung, habe ich festgestellt, dass, beginnend in iOS 9, Apple einen neuen Rahmen eingeführt, Contacts, für Kontakte zugreifen. Ich habe auch gelernt, dass Their documentation beschreibt, mit einem System namens Predicates zum Abrufen von Informationen aus einem Kontakt. Ich bin mir jedoch nicht sicher, wie ich das umsetzen soll.

Implementierung

Based primarly on this tutorial, ich habe herausgefunden, wie die Kontakte Picker Fenster zu präsentieren.

import UIKit 
import Contacts 
import ContactsUI 

class ViewController: UIViewController, CNContactPickerDelegate { 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 
@IBAction func contactsPressed(_ sender: AnyObject) { 
    let contactPicker = CNContactPickerViewController() 
    contactPicker.delegate = self; 

    self.present(contactPicker, animated: true, completion: nil) 
} 

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) { 
    //Here is where I am stuck - how do I get the image from the contact? 
} 

} 

Vielen Dank im Voraus!

Antwort

7

Es gibt drei Eigenschaften im Zusammenhang mit Bildern kontaktieren nach den API reference doc von Apfel:

Bildeigenschaften

var imagedata: Daten? Das Profilbild eines Kontakts.

var thumbnailImageData: Daten? Die Miniaturansicht des Profilbilds des Kontakts

var imageDataAvailable: Bool Zeigt an, ob ein Kontakt ein Profilbild hat.

Sie können die CNContact Instanz von CNContactProperty erhalten und Zugriff dann imageData in CNContact Klasse.

So kann Ihr Code wie folgt aussehen:

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) { 
    let contact = contactProperty.contact 
    if contact.imageDataAvailable { 
     // there is an image for this contact 
     let image = UIImage(data: contact.imageData) 
     // Do what ever you want with the contact image below 
     ... 
    } 
} 
+0

Thank you! Ich schätze die Hilfe !! – rocket101

Verwandte Themen