Ähnlich zu
PhotoPicker-Erkennungsfehler: Fehler Domain = PlugInKit-Code = 13
und auch zu
https://forums.developer.Apple.com/thread/82105
ABER ich habe alle diese Vorschläge ausprobiert und bekomme immer noch einen Fehler im Debug-Protokoll. Läuft Swift 4 XCode 9A235
Was an den verschiedenen Orten vorgeschlagen wurde, war ...
Ich habe DID diese Probleme NICHT in Swift 3 erhalten - früherer xcode ... __ Aber mit Swift 4 habe ich versucht, alles zu tun, was ich sah, und ich bekomme immer noch die folgende Fehlermeldung
[discovery] -Fehler beim Erkennen von Erweiterungen: Fehler Domain = PlugInKit Code = 13 "Abfrage abgebrochen" UserInfo = {NSLocalizedDescription = Abfrage abgebrochen}
Der Picker funktioniert einwandfrei und ich kann am Ende ein Bild aus Fotos auswählen, aber ich bekomme diese Fehlermeldung beim Beenden des Pickers (Abbrechen oder Auswählen), jedes Mal ...
Vorschläge, wie Sie die Fehlermeldung beenden können? Andere als die Liste der Dinge, die bei den beiden anderen Links angeboten werden (oben zusammengefasst)
meine Methode
@objc internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
imageSelected = nil
if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
imageSelected = editedImage
} else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
imageSelected = originalImage
}
if imageSelected != nil {
handleSelectedImage() // override in subclass to do something with the returned image
}
picker.dismiss(animated: true, completion: nil) // mess of calling both dismiss to see if it helps - it does not
dismiss(animated: true, completion: nil)
}
siehe in mc-system-group-container-und-mc-reading-from-public-effektive-user-settings-err
Arbeit ist gut für mich
wenn es unter meinem Code helfen kann (Arbeiten mit Xcode 9)
if libraryAuthorization == .authorized {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = false
imagePicker.view.tag = button.tag
self.present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickerImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
photoContainer.addImageToButton(pickerImage, buttonTag: picker.view.tag)
dismiss(animated: true)
}
}
Ich hatte das gleiche Problem und versuchte jede Lösung, die ich finden konnte, aber nichts half. Ich habe mich nur gefragt, was mit dem Delegierten passieren könnte, wenn er nicht ausgelöst wird: Freigabe des Delegierten!
Und das war es in meinem Fall! Wenn der UIImagePickerController präsentiert wird, wird meine Instanz von class ImagePickerController : NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate
, Die nicht der präsentierende View-Controller ist, direkt freigegeben. Natürlich können die Delegatfunktionen nicht mehr ausgeführt werden.
Setzen Sie einfach einen Haltepunkt in deinit
(oder dealloc
in Objective-C-Welt) und prüfen Sie, ob Ihr Delegat freigegeben wird.
Der Benutzer fragt: "* Vorschläge zur Behebung der Fehlermeldung? Andere als die Liste der Dinge, die unter den beiden anderen Links angeboten werden (oben zusammengefasst)".
Ich habe die Fehlermeldung in zwei Schritten beseitigt. Kudos für die Person über Antoine Richeux https://stackoverflow.com/users/5767821/antoine-richeux .
.__ Ich denke, dass der Zusatz zum Datenschutz in pList zumindest in meinem Fall nicht erforderlich ist
SCHRITT 1.Wählen Sie in der Menüleiste Folgendes aus: Product> Scheme> Edit Scheme> Wählen Sie Run in der linken Liste von Build, Run ... ArchiveSelect Arguments Von der oberen Auswahlgruppe auf der rechten Seite - siehe Abbildung . Fügen Sie mit der Schaltfläche + unter Umgebungsvariablen einen neuen Eintrag hinzu Name: OS_ACTIVITY_MODE Wert: disable
Dies zeigt, wo die Umgebungsvariable hinzugefügt werden soll
STEP 2. Reinigen Sie das Projekt und erstellen Sie es neu
Kannst du es ausprobieren?
extension YourProfileViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
log.debug("Called imagePickerController function ")
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismiss(animated: true) {
self.yourProfileImageView.image = image
}
}
}
Dies ist darauf zurückzuführen, dass Ihre App eine Fotobibliothek verwendet (in diesem Fall UIImagePickerController
), ohne dass Sie um Erlaubnis des Benutzers gefragt werden. Wenn ich beispielsweise die Bildauswahl anzeigen möchte, wenn auf die Schaltfläche "Hinzufügen" geklickt wurde:
@IBAction func addButtonTapped(_ sender: UIBarButtonItem) {
checkPermission {
let picker = UIImagePickerController()
picker.sourceType = .photoLibrary
picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
picker.delegate = self
picker.allowsEditing = false
self.present(picker, animated: true, completion: nil)
}
}
func checkPermission(hanler: @escaping () -> Void) {
let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
switch photoAuthorizationStatus {
case .authorized:
// Access is already granted by user
hanler()
case .notDetermined:
PHPhotoLibrary.requestAuthorization { (newStatus) in
if newStatus == PHAuthorizationStatus.authorized {
// Access is granted by user
hanler()
}
}
default:
print("Error: no access to photo album.")
}
}
Darüber hinaus müssen Sie dies auch in Ihre Liste aufnehmen:
<key>NSPhotoLibraryUsageDescription</key>
<string>So that you can add images for your cloth. </string>
dies ist die Nachricht, die im Berechtigungsdialogfeld angezeigt wird.
Ich hatte auch dieses Problem. Das ist sehr ärgerlich, da der Konsolenfehler auftritt, aber die App das Bild immer noch lädt. Ich forderte den Autorisierungsstatus an, fügte meine Schlüssel zur .plst hinzu, fand aber nichts davon, um die Aufgabe zu erledigen.
Nachdem ich zu Product -> Scheme -> Edit Scheme -> Run gegangen bin, habe ich dann den Schlüssel hinzugefügt: " OS_ACTIVITY_MODE " value: " disable ", bereinigt und neu aufgebaut ... der Fehler ging weg .
Für Swift 4:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else {
return
}
...
}
[String: Any]
in [UIImagePickerController.InfoKey : Any]
.info["UIImagePickerControllerOriginalImage"]
in info[UIImagePickerController.InfoKey.originalImage]
.var messageImage = UIImage()
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
self.dismiss(animated: true, completion: { () -> Void in
})
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
{
messageImage = image
}
print("Image Captured")
}
Sie müssen UIImagePickerController.InfoKey.originalImage
Und nicht UIImagePickerController.InfoKey.editedImage
Abrufen.
Hatte das gleiche Problem auf Swift 4.2 und Xcode 10.0 . Obwohl der Bildwähler korrekt funktioniert hat Xcode diesen Fehler auf der Konsole angezeigt. Um das loszuwerden:
Stellen Sie sicher, dass Sie erklären, dass Ihre Klasse UINavigationControllerDelegate
implementiert.
extension MyViewController: UINavigationControllerDelegate {}
Aus irgendeinem Grund in Xcode 9.0 wurde ich gewarnt, den Delegierten als solchen zu deklarieren:
imagePicker.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate