ich ein Programm schreibt, dass der Benutzer in Kontakt mit den CNContactPickerViewController
mit holen kann. Wenn der ausgewählte Kontakt tut NOT
eine zugehörige Telefonnummer hat, mag ich es mit einem Fehler popover haben und auf die ContactPickerViewController
zurück, wenn sie ok getroffen. Ich habe den Code mit Breakpoints durchlaufen und es wird korrekt ausgeführt, es wird jedoch kein Fehler angezeigt.prüfen, wenn der Benutzer der Telefonnummer in CNContactStore und aktuellen Fehler popover
Ich kann nicht für das Leben von mir herauszufinden, warum ... hier ist mein Code:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
if contact.phoneNumbers.first?.value.stringValue != nil{
//@TODO: check for repeats in people array
// do something with contact
let newPerson = Person(firstName: contact.givenName,
lastName: contact.familyName,
profileImage: #imageLiteral(resourceName: "capitalizing_on_the_economic_potential_of_foreign_entrepreneurs_feature.png"))
if contact.imageDataAvailable == true{
newPerson.profileImage = UIImage(data: contact.imageData!)!
}
// this is for the full name
let fullname = "\(contact.givenName) \(contact.familyName)"
print("The selected name is: \(fullname)")
let phoneNum = contact.phoneNumbers.first?.value.stringValue
print("The selected phone num is: \(phoneNum!)")
//appends data to new activity model for prep to send back to home vc
newActivity.people.append(newPerson)
print("the people in the new activity array are: \(newActivity.people)")
peopleCollection.reloadData()
} else {
print("error has no number")
let alertController = UIAlertController(title: "Error: Person has no number!", message: "", preferredStyle: .alert)
let confirmAction = UIAlertAction(title: "Ok", style: .default, handler: {
alert -> Void in
})
//add actions to alert sheet
alertController.addAction(confirmAction)
self.present(alertController, animated: true, completion: nil)
//the code executes here correctly, but it does not present the alertController
}
//this is for phone number without dashes
//print("the selected phone number is: \((contact.phoneNumbers[0].value).value(forKey: "digits") as! String)")
}
Edit: die letzte benötigte uncommented Linie picker.present werden (alertController, animiert: true, Abschluss: null), so dass es dem Kommissionierer nicht selbst präsentiert über. Wie auch immer, jetzt habe ich ein anderes Problem, bei dem die AlertView einfach von selbst verschwindet, ohne darauf zu warten, dass der Benutzer auf OK klickt. Es bleibt etwa eine Sekunde lang stehen. Wie bekomme ich es, bis der Benutzer auf OK klickt? –