ফটোপিকার আবিষ্কারের ত্রুটি: ত্রুটি ডোমেন = প্লাগইনকিট কোড = 13


118

আমি ইউআইআইমেজভিউতে ফটো লাইব্রেরি থেকে একটি চিত্র প্রদর্শনের চেষ্টা করছি

সম্পূর্ণ ত্রুটিটি হ'ল:

2017-06-09 21: 55: 59.063307 + 0200 firstapp2.0 [12873: 1120778] ফটোপিকার আবিষ্কারের ত্রুটি: ত্রুটি ডোমেন = প্লাগইনকিট কোড = 13 "ক্যোয়ারী বাতিল হয়েছে" ইউজারআইএনফো = {এনএসলোক্যালাইজড বিবরণ = প্রশ্ন বাতিল হয়েছে}

আমার কোডটি নীচে অন্তর্ভুক্ত করা হয়েছে:

import UIKit

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate{

    @IBOutlet weak var pic: UIImageView!
    @IBOutlet weak var text: UILabel!

    var chosenImage : UIImage!

    override func viewDidLoad() {
        super.viewDidLoad()        
        pic.isUserInteractionEnabled = true;
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) {
        var chosenImage = info[UIImagePickerControllerEditedImage]
        self.pic!.image = chosenImage as! UIImage
        picker.dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }

    @IBAction func tap(_ sender: Any) {        
        self.text.text = "Kreason"
        let imagePicker = UIImagePickerController()    
        imagePicker.delegate = self        
        imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        imagePicker.allowsEditing = false    
        self.present(imagePicker, animated: true, completion: nil)
    }
}

11
আমি একই ত্রুটি পেয়েছি। আপনি কি এক্সকোড 9 বিটা, আইওএস 11 ব্যবহার করছেন?
জন

4
এটি কাজ করত ... এবং তারপরে আইওএস 11 বিটা 4 হঠাৎ আমাকে এই ত্রুটিটি দেয়। খুব অদ্ভুত.
ব্যবহারকারী 2153553

2
আমি একই ত্রুটি পেয়েছি এবং আমার বাস্তবায়ন হ'ল আপত্তি-সি। এই ত্রুটি বার্তাটি উদ্দেশ্য-সি-তে UIImagePicker প্রতিনিধি পদ্ধতিতে ফিরে আসা তথ্য অভিধানের প্রকারের কাস্টিংয়ের সাথে সম্পর্কিত হতে পারে না: - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)infoঅভিধান মানগুলি আইজেক্ট-সি-তে আইডি হিসাবে কাস্ট করা হয় । আমি ব্যবহারকারীর ফটো লাইব্রেরি অ্যাক্সেসের জন্য অনুমোদনের অনুরোধ এবং পরিচালনা পরিচালনাও বাস্তবায়ন করেছি: তবুও ত্রুটির বার্তা পাচ্ছি। ব্যবহারকারীর ফটো লাইব্রেরি ব্যবহারের জন্য গোপনীয়তা এন্ট্রি ফাইলটিতে আমি যুক্ত করেছি p
valeCocoa

2
আমি বর্তমান বাগটি পেয়েছি তবে এটি আমাকে লাইব্রেরি থেকে চিত্র পেতে এবং এটি পরে ব্যবহার করতে বাধা দেয় না ..
শোকরফ ২৯

3
আমি চেষ্টা সব মধ্যে প্রস্তাবনার সব কোন উপকার মিলিত উত্তর।
নিকোলাস মিয়ারি

উত্তর:


39

আপনাকে সুস্পষ্ট উদ্দেশ্য-সি রেফারেন্স তৈরি করতে হবে: @objc

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    image = chosenImage
    self.performSegue(withIdentifier: "ShowEditView", sender: self)
    dismiss(animated: true, completion: nil)
}

6
আমার জন্য কাজ কর. আমি সম্প্রতি সুইফট 4 এবং এক্সকোড 9 এ আপডেট করেছি এবং এটি এটি সমাধান করেছে।
ব্যবহারকারী3144836

3
আমার জন্য কাজ কর. সুইফট ৪.০ এ স্থানান্তরিত হওয়ার পরে প্রয়োজনীয়।
mayankk2308

4
কাজ করে না। আমি ফোন করার পরে এই ত্রুটি ঘটেছে dismiss
কিমি চিউ

স্ট্রেঞ্জ। এটি আমার পক্ষে কাজ করেছে তবে এক্সকোড এটিকে একটি সতর্কতা হিসাবে চিহ্নিত করে এবং এর স্বাক্ষর প্রত্যাশা করে: `ইনস্ট্যান্স পদ্ধতি 'চিত্রপিকারকন্ট্রোলার ( : didFinishPickingMediaWithInfo :)' প্রায়ের সাথে মেলে imageচ্ছিক প্রয়োজনীয়তা 'চিত্রপিকারকন্ট্রোলার' : : didFinishPickingMediaWithInfo :) 'এই সতর্কতাটি নিরব করতে ব্যক্তিগত private
ডার্ক ক্যাসেল

@ ডার্কক্যাসল আপনার extension [your class name]ক্লাসের বাইরে একটি ব্লকে ফাংশনটি লিখতে হবে ।
প্রমিথিয়স দ্বিতীয়

18

আমি এই সমাধান খুঁজে পেয়েছি। নীচে উল্লিখিত এই দুটি কারণে আমরা এই ত্রুটিটি পেয়েছি।

  1. অনুমোদনের জন্য প্রথমে আমাদের এই পদ্ধতিটি কল করতে হবে

অনুমোদন কোড

func checkPermission() {
  let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus() switch photoAuthorizationStatus {
    case .authorized: print("Access is granted by user")
    case .notDetermined: PHPhotoLibrary.requestAuthorization({
      (newStatus) in print("status is \(newStatus)") if newStatus == PHAuthorizationStatus.authorized { / do stuff here */ print("success") }
    })
    case .restricted: / print("User do not have access to photo album.")
    case .denied: / print("User has denied the permission.")
  }
}
  1. কল করার পদ্ধতিটির সঠিক উপায় didFinishPickingMediaWithInfo

ভুল:

private func imagePickerController( picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
} 

অধিকার

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
} 

আমি আশা করি এই সমাধানটি এই ত্রুটিটি সমাধান করতে আপনাকে সহায়তা করবে।

যদি এটি আপনার পক্ষে কাজ করে তবে এটিকে একটি সঠিক হিসাবে চিহ্নিত করতে ভুলবেন না, সুতরাং এটি অন্যকে সঠিক উপায় খুঁজে পেতে সহায়তা করবে।


নুব পিএসএ: পিএইচপি ফটোলিবারি সুইফটের ফটো মডিউল থেকে এসেছে
ব্র্যাডেন হল্ট

কাজ করে না। ত্রুটিটি আমার কল করার পরে ঘটেpicker.dismiss(animated: true, completion: nil)
ফোর্সব্রু

17

আমি এটি পেয়েছি! এটি আপনাকে বলার চেষ্টা করছে যে "ফটোগুলি" দিতে আপনার #import <Photos/Photos.h>অনুমোদন নেই আপনার উদাহরণস্বরূপ উদ্দেশ্য ও সিটিতে অন্তর্ভুক্ত করে অনুমোদনের অনুরোধ করতে হবে।

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে। আমি ডিবাগ করতে পুরো দুটি দিন কাটিয়েছি!

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    switch (status) {
        case PHAuthorizationStatusAuthorized:
            NSLog(@"PHAuthorizationStatusAuthorized");
            break;
        case PHAuthorizationStatusDenied:
            NSLog(@"PHAuthorizationStatusDenied");
            break;
        case PHAuthorizationStatusNotDetermined:
            NSLog(@"PHAuthorizationStatusNotDetermined");
            break;
        case PHAuthorizationStatusRestricted:
            NSLog(@"PHAuthorizationStatusRestricted");
            break;
    }
}];

আমি নিশ্চিত যে কেউ আপনাকে সুইফটে কীভাবে এটি করতে পারে তা বলতে পারে।


1
নিশ্চিত করুন যে আপনি # ইমপোর্ট <ফটো / ফটো h> অন্তর্ভুক্ত করবেন
রবার্ট ওয়াহনাউটকা

6
এটি আমার সমস্যার সমাধান করেনি।
fi12

1
আমি কনসোলে নীচের বার্তাটি পাচ্ছি "ব্যক্তিগত কার্যকর ব্যবহারকারীর সেটিংস থেকে পড়া extension এটি সমস্যার সমাধান করেনি।
বিরানচি

15

অনেক সাফল্য ছাড়াই কয়েকটি সংমিশ্রণ প্রতিক্রিয়া চেষ্টা করে।

সুইফট 4 ব্যবহার করে আমি জানতে পেরেছিলাম যে ছবিটি বাছাই করা এবং বেছে নেওয়া হয়েছে কিনা তা নিশ্চিত করার জন্য আমার নীচের দুটি আইটেম বাস্তবায়িত হয়েছিল (নোট করুন যে এক্সটেনশানগুলি আবিষ্কার করার সময় "[আবিষ্কার] ত্রুটি হয়েছে:

ত্রুটিযুক্ত ডোমেন = প্লাগইনকিট কোড = 13 "ক্যোয়ারী বাতিল হয়েছে" ব্যবহারকারীআইফোন = {এনএসএলোক্যালাইজডডেস্ক্রিপশন = ক্যোয়ারী বাতিল হয়েছে} "

বার্তাটি এখনও কনসোলে প্রদর্শিত হয়, তবে এটি আপনাকে কোনও চিত্র যুক্ত করতে বাধা দেয় না)। হতে পারে এটি এমন একটি বার্তা যা ফলাফল বাছাইকারীকে বরখাস্ত করা হবে?

1) জন্য প্রতিনিধি UIImagePickerControllerহয় (UIImagePickerControllerDelegate & UINavigationControllerDelegate)?তাই প্রয়োজন স্পষ্টভাবে যোগ করার জন্য UINavigationControllerDelegateপ্রোটোকল এক হিসাবে:

class ViewController:UIViewController, UIImagePickerControllerDelegate, 
    UINavigationControllerDelegate { .... }. 

2) নিশ্চিত করুন যে তথ্য.প্লেস্টে Privacy - Photo library Usage Descriptionকী এবং স্ট্রিংয়ের মান সেট রয়েছে।

অবশ্যই, আপনি তা নিশ্চিত করার জন্য আপনি একটি প্রয়োজন UIImagePickerControllerএবং তার প্রতিনিধি সেট করতে সমান selfমধ্যে ViewDidLoad():

class ViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
    let imagePickerController = UIImagePickerController()
    override func viewDidLoad() {
        super.viewDidLoad()
        imagePickerController.delegate = self
    }
    ...
}

4
আমার প্রজেক্টে আমার এই সমস্ত কিছু আছে .. এখনও এটি কাজ করে না
মোহাম্মদ লি

ধন্যবাদ আমি ভিডিডলয়েড ()
আরশাদ শাইকের

11

আমি এই সমস্যাটি স্থির করেছি, আপনার অ্যাপ্লিকেশনের অনুমতি পরীক্ষা করতে নীচে ভিডিডলোড বা ভিউউইল অ্যাপয়ার বা ভিউডিড অ্যাপায়ারে কল করুন function

func checkPermission() {
        let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
        switch photoAuthorizationStatus {
        case .authorized:
            print("Access is granted by user")
        case .notDetermined:
            PHPhotoLibrary.requestAuthorization({
                (newStatus) in
                print("status is \(newStatus)")
                if newStatus ==  PHAuthorizationStatus.authorized {
                    /* do stuff here */
                    print("success")
                }
            })
            print("It is not determined until now")
        case .restricted:
            // same same
            print("User do not have access to photo album.")
        case .denied:
            // same same
            print("User has denied the permission.")
        }
    }

এবং উপরের পদ্ধতিটি ব্যবহার করতে, import Photosক্লাসের শীর্ষে যুক্ত করতে ভুলবেন না ।


11

এক্সকোড 10.1 / সুইফট 4.2:

  1. প্রয়োজনীয় অনুমতি যুক্ত করুন (অন্যদের উল্লিখিত)

  2. এই প্রতিনিধি ফানক বাস্তবায়ন:

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    
        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            self.imgView.contentMode = .scaleAspectFit
            self.imgView.image = pickedImage
        }
    
        dismiss(animated: true, completion: nil)
    }

1
সুইফট 4x উপর imagePickerController func ব্যবহারের সত্য পথ
Samet Sazak

10

সুইফট 3

*
ডেলিগেট মিস করা হয়েছে আমার ক্ষেত্রে, সমস্ত সেটিংস সঠিক ছিল: 1 - ডেলিগেটস (ইউআইআইজিএইচপিগ্রিকারকন্ট্রোলারডেলিগেট, ইউআইএনএভিগেশন কন্ট্রোলারডেলিগেট);
2 - অনুমতিগুলি ইতিমধ্যে যাচাই করা হয়েছে;
3 - ইতিমধ্যে কাজ শেষ;
4 - এই উত্তরগুলিতে সমস্ত কিছু পড়েছি, আমি করেছি;

কিন্তু আমি বাস্তবায়ন করতে ভুলে গেছি pickerview.delegate = selfউপর viewDidLoad কারণ আমি কপি এবং আমার অন্যান্য viewController থেকে আটকানো ও ভুলে যাবেন না যে!

আমি আশা করি এটি কাউকে সহায়তা করবে, আপনার কপি / পাস্তটি প্রথমে পর্যালোচনা করুন !!!


ধন্যবাদ, দীর্ঘ সময় ধরে লড়াই করে যাচ্ছি এবং আমি "ইউআইএনএভিগেশন কন্ট্রোলারডেলিগেট" মিস করেছি, আপনি শেষ পর্যন্ত সংরক্ষণ করেছেন, ধন্যবাদ
সাকথিমুথিয়াহ

সাহায্য করতে পেরে আনন্দিত :)
ড্যানিয়েল আরান্তেস লাভার্ড

8

এটি সবচেয়ে সরাসরি সহায়ক উত্তর নাও হতে পারে - তবে আশা করি এটি সাহায্য করবে! আমি 99% নিশ্চিত যে এই বিশেষ ত্রুটি বার্তাটি আপনাকে প্রকৃত সমস্যার দিকে নির্দেশ করছে না। আমি একই একই সমস্যাটি নিয়ে আমার চুলগুলি টানতে ঘন্টা কাটিয়েছি।

1) আমি যখন আমার পিকারটি চালু করবো তখন কনসোলে ফটো মুদ্রণের জন্য আমার অনুমোদন ছিল, 2) আমি খুব সহজেই নেভিগেট করতে পারি এবং কোনও ফটো তুলতে পারি এবং 3) যখন পিকারটি বরখাস্ত করার পরে আমার দৃশ্যে ফিরে আসে, আমার বোতামের চিত্র নতুন ছবিটির সাথে আপডেট করা হয়নি ... এবং সমস্যাটির একমাত্র ইঙ্গিতটি ছিল যে আপনি পেয়ে যাচ্ছেন ঠিক একই ত্রুটি বার্তা।

দেখা যাচ্ছে আমি ভিউডিলডোডের পরিবর্তে ভিউউইল অ্যাপ্লায় একটি স্থানধারক চিত্রকে হার্ড কোডিং করছি। প্রতিবার বাছাইকারীটি বরখাস্ত করার সময়, এটি ভিউউইল অ্যাপয়ারকে কল করছিল এবং আমার নির্বাচিত চিত্রটি আমার হার্ড কোডিং চিত্রের সাথে প্রতিস্থাপন করছিল। আমি এই সমস্যাটি স্থির করে দিয়েছি এবং যথেষ্ট নিশ্চিত হয়েছি - এখন সবকিছু ঠিকঠাক চলছে ... এবং আমি এখনও পিকার থেকে ফিরে আসার সময় ত্রুটি বার্তাটি দেখতে পাচ্ছি।

আমি আপনার সমস্যার জন্য ইমেজপিকার বাদে অন্য কোথাও দেখার পরামর্শ দিচ্ছি এবং সম্ভবত আপনি এটি খুঁজে পাবেন।


7

আপনি এখন সম্পন্ন না করে থাকেন, চেষ্টা এই

প্রোডাক্ট> স্কিম> এডিট স্কিম> এনভায়রনমেন্ট ভেরিয়েবল OS_ACTIVITY_MODE: disable

এটি আমার সমস্যা সমাধান করে।


23
এটি ত্রুটি বার্তাগুলিকে দমন করে তবে তাদের কারণটির দিকে নজর দেয় না। এটি অন্যান্য সিস্টেমের বার্তা এবং যে কোনও কিছুকে দমন করে NSLog
জন মন্টগোমেরি

6
এটি সমস্যাটিকে 'সমাধান' করে না, কেবল এটি অদৃশ্য করে তোলে। খুব খারাপ অনুশীলন।
জিশান

এই tbh কম্বল অধীনে আপনার ময়লা গোপন এর সমতূল্য
শিব

7

এটি সুইফট 4 এ সমস্যার সমাধান করে:

নীচের কোডটি পরিবর্তন করুন

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {}

এটি:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {}


Swift 4.2 update:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){}

আমার ত্রুটিটি এরকম কিছু দেখেছে: এক্সটেনশানগুলি আবিষ্কার করার সময় ত্রুটিগুলির মুখোমুখি হয়েছে: ত্রুটি ডোমেন = প্লাগইনকিট কোড = 13 "ক্যোয়ারী বাতিল হয়েছে" ইউজারআইএনফো = {এনএসএলোক্যালাইজডডেস্ক্রিপশন = ক্যোয়ারী বাতিল হয়েছে} এবং এটি আমার সমস্যার সমাধান করেছে, যদিও আমি ওপিকে সহায়তা করে যদি আমি কথা বলতে পারি না । ধন্যবাদ :)
অগ্রিপ্পা

6

আমি যখন পিকার কলব্যাক থেকে অন্য একজন নিয়ামক উপস্থাপন করার চেষ্টা করছিলাম তখন আমি একই বার্তাটি পেয়েছি imagePickerController। আমার পক্ষে যে সমাধানটি কাজ করেছিল তা হ'ল নির্বাচককে বরখাস্ত করার পদ্ধতি থেকে আমার কোডটি সমাপ্তি কলব্যাকের ভিতরে নিয়ে যাওয়া

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        picker.dismiss(animated: true) {
            if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
                let cropController:CropViewController = CropViewController(croppingStyle: .circular, image: pickedImage)
                cropController.delegate = self
                self.present(cropController, animated: true, completion: nil)
            }
        }
    }

দুর্দান্ত উত্তর, আপনি আমার সময় বাঁচিয়েছেন 👍🏼
কোডার এসিজেএইচপি

আশ্চর্য কাজ! সুইচ ৪.x-তে পিকারের ত্রুটিগুলি মোকাবেলার জন্য এটি সঠিক উপায় বলে মনে করেন
shiv

4

নিশ্চিত করুন যে আপনি উভয় subclassing হয় তা নিশ্চিত করুন: UIImagePickerControllerDelegate, UINavigationControllerDelegate

এছাড়াও, প্রতিনিধি সেট করতে মনে রাখবেন:

let picker = UIImagePickerController()
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.delegate = self  //Don't forget this line!
self.present(picker, animated: true, completion: nil)

এই উত্সে ক্রেডিট ।


picker.delegate = স্ব - আমার ক্ষেত্রে ছিল! ধন্যবাদ.
আলেক্সি চেকানভ

4

এই সমস্যার সমাধান খুঁজে পেতে আমাকে চিরকালের জন্য নিয়ে যায়। দেখে মনে হচ্ছে সমস্যাটি হ'ল UIImagePickerControllerDelegate এর ফাংশন চিত্রপিকারকন্ট্রোলারটি খুঁজে পাওয়া যায় না। আপনি যদি প্রতিনিধিটিকে সঠিকভাবে সেট করে রেখেছেন এবং এটি সুইফট 4-এ আপগ্রেড করার পরে কাজ করা বন্ধ করে দিয়েছে, সমস্যাটি সম্ভবত আপনি সুইট 4-এর পরে প্রয়োজনীয় @objc ব্যবহার করে এটি অবজেক্টিভ-সি-তে অ্যাক্সেসযোগ্য করে তুলেছেন নি।

এটা করা হয়েছে:

@objc ফানক ইমেজ পিকারকন্ট্রোলার (...

পরিবর্তে

func imagePickerController(...

এটি ত্রুটি তৈরি করেObjective-C method 'imagePickerController:didFinishPickingMediaWithInfo:' provided by method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' conflicts with optional requirement method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' in protocol 'UIImagePickerControllerDelegate'
নিকো নিল

ঠিক এইভাবে, এটি এটি ঠিক করার উপায়!
মারিয়া অরতেগা

@ নিকোনিল আপনি ফাংশনটি একটি extensionব্লকে যুক্ত করেছেন?
প্রমিথিয়স II

4

চিত্রটি সেট করার সময় 1 সেকেন্ড বিলম্ব সেট করে এটি স্থির করুন।

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {

        picker.dismiss(animated: false, completion: nil)
        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
            self.discussionImage.image = image
        })
    }
}

3

যোগ করার জন্য নিশ্চিত করুন internal funcশুরুতে এবং তারপর প্রথম বন্ধনী পরে ছোট হাতের যোগ করুন ( _ picker: UIImagePickerController…এবং তারপর থেকে পরিবর্তন AnyObjectকরতে Any] ...
নিচে চেক কোড:

internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

        userPhoto.image = pickedImage

    }

    self.dismiss(animated: true, completion: nil)
}

3

এটি আমাকে আটকে রেখেছে, কিন্তু নীচের লিঙ্কে উত্তরটি আমার পক্ষে কাজ করেছে। ত্রুটি চলে গেছে এবং প্রত্যাশা অনুযায়ী চিত্র প্রদর্শিত হবে

উপরে উত্তর এক ভালো লেগেছে, আপনি আছে (_ picker...কিন্তু @objcফাংশন আগে।

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
...
}

https://forums.developer.apple.com/thread/82105


2

এটি আমার ত্রুটির সমাধান করেছে:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
    addPhotoBtn.setImage(pickedImage, for: .normal)
    dismiss(animated: true, completion: nil)


}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)

}

2

নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন দয়া করে:

  1. ফটো আমদানি করুন
  2. অ্যালবাম অ্যাক্সেস আছে:

    func authorizeToAlbum(completion:@escaping (Bool)->Void) {
    
    if PHPhotoLibrary.authorizationStatus() != .authorized {
        NSLog("Will request authorization")
        PHPhotoLibrary.requestAuthorization({ (status) in
            if status == .authorized {
                DispatchQueue.main.async(execute: {
                    completion(true)
                })
            } else {
                DispatchQueue.main.async(execute: {
                    completion(false)
                })
            }
        })
    
    } else {
        DispatchQueue.main.async(execute: {
            completion(true)
        })
    }
    }
  3. উপস্থিত ইউআইআইজিপইপিকারকন্ট্রোলার

    self.authorizeToAlbum { (authorized) in
        if authorized == true {
            let picker = UIImagePickerController()
            picker.delegate = self
            picker.allowsEditing = false
            picker.sourceType = .photoLibrary
    
            self.present(picker, animated: true, completion: nil)
        }
    }
  4. মূল পদক্ষেপ, নিশ্চিত করুন যে প্রতিনিধি পদ্ধতিটি কঠোরভাবে অনুসরণ করার মতো

    // MARK: - UIImagePickerControllerDelegate Methods
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        self.pickedImage = pickedImage
        if let finalImage = handleImage(originalImage: self.pickedImage!, maskImage: self.maskImage!) {
            self.imageView.image = finalImage
        }
    }
    
    dismiss(animated: true, completion: nil)
    }

2

এটিই আমি করেছি এবং এটি আমার সমস্যা সমাধান করেছে।

  • যোগ করুন
  • অভ্যন্তরীণ যোগ করুন
  • ইমেজপিকারের আগে _ যুক্ত করুন
  • নিশ্চিত করুন যে আপনি যে কোনওটি এবং কোনওও অবজেক্ট ব্যবহার করছেন না

আশাকরি এটা সাহায্য করবে!


হুঁ, internalডিফল্ট; আমি আশ্চর্য হয়েছি এটি নির্দিষ্ট করার জন্য এটি কী
তফাত্

2

আমার ক্ষেত্রে আমি এই ত্রুটিটি পেয়েছিলাম কারণ যদি ব্যবহারকারীরা ছবিগুলিতে অ্যাক্সেসের অনুমতি দিয়ে থাকে তবে আমি প্রথমে যাচাই না করে একটি চিত্র চয়নকারী নিয়ামক উপস্থাপন করছিলাম। আমার কোডে অন্য কোথাও ব্যবহারকারী অনুমতি দিয়েছে তাই আমি মনে করি আমাকে যা করতে হবে তা হ'ল ফটো আমদানি। যাইহোক, যেহেতু অ্যাপ্লিকেশনটির সেই মুহুর্তে তারা 'অনুমোদন' দিতে পারেনি আমি চিত্র সংশোধনকারী নিয়ন্ত্রক আমার জন্য সমস্যাটি সমাধান করার আগে এটি যুক্ত করেছেন (ফটো আমদানিও করুন)।

// request photos permission if permission has not been granted
    if PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.authorized {
        PHPhotoLibrary.requestAuthorization({ (status: PHAuthorizationStatus) in

        })
    }

যদি এই উত্তরটি আমার ক্ষমা প্রার্থনাগুলি অপ্রয়োজনীয় মনে হয় তবে আমার সমাধানটি কাজ করতে আমাকে কয়েকটি ভিন্ন উত্তর থেকে একত্রে টুকরো টুকরো করতে হয়েছিল। সম্ভবত এটি সুইফট 4 ব্যবহার করে অন্য কাউকে সহায়তা করবে।


2

এই কোড ব্যবহার করুন

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])

2

এই "ত্রুটি ডোমেন = প্লাগইনকিট কোড = 13" ত্রুটিটি অনেক লোককে বিস্মিত করেছে যদিও এটি কোনও ক্ষতিহীন অ্যাপল ডিবাগ বার্তা বলে মনে হচ্ছে। আমি আমার ইউআইতে সেট করতে যে চিত্রটি তুলেছি তা পেতে আমার সমস্যা হয়েছে এবং ভেবেছিলাম যে সমস্যাটি ত্রুটি ছিল তবে এটি কিছুটা সূক্ষ্ম কিছু ছিল।

আমার ইমেজ বাছাইকারী নিয়ামকটি এটি উপস্থাপন করছে এমন ভিউ কন্ট্রোলার থেকে পৃথক একটি ফাইলে রয়েছে।

MyViewController.swift

class MyViewController: UIViewController {
    @IBOutlet weak var profileImage: UIImageView!

    ...
}

extension MyViewController: ImagePickerDelegate {
    func didSelect(image: UIImage?) {
        self.profileImage.image = image
    }
}

ImagePicker.swift

open class ImagePicker: NSObject {
    ...
    private func pickerController(_ controller: UIImagePickerController, didSelect image: UIImage?) {
        controller.dismiss(animated: true, completion: {self.delegate?.didSelect(image: image)}
        )
    }
}

বেশিরভাগ টিউটোরিয়াল এবং উত্তরগুলির সমাপ্তি শূন্য থাকে। তবে আপনি যদি নির্ধারণের জন্য নির্ধারণের জন্য সেট করেন এবং প্রতিনিধিদের ডিডলেক পদ্ধতিটিকে পৃথকভাবে কল করেন তবে পদ্ধতিটি কল হয়ে যায় তবে চিত্রটি সেট না করে তবে বরখাস্তের 'সম্পূর্ণতা ব্যবহার করা নিশ্চিত করুন make

এবং আবারও, আমি জানি এই উত্তরটি মূল প্রশ্নের সাথে সরাসরি সম্পর্কিত নাও হতে পারে তবে আমার মনে হচ্ছে এই সমস্যাটির জন্য অনেক লোক এখানে আসছেন এবং প্রদত্ত সমাধানগুলি সহায়তা করছে না। কারণটি হ'ল উত্তর দেওয়ার বেশিরভাগ লোকেরই তাদের প্রধান ভিউ নিয়ামক হিসাবে একই শ্রেণিতে তাদের চিত্র চয়নকারী নিয়ামক রয়েছে এবং সুতরাং সম্পূর্ণরূপে ব্যবহার করার প্রয়োজন নেই।


এটাই আমার দরকার ছিল। ধন্যবাদ!
এজে হার্নান্দেজ

1

ত্রুটি ঘটে যখন আপনি ফটো লাইব্রেরীতে ব্যবহার অনুমতি কনফিগার না আপনিInfo.plist ফাইলটিতে ।

আপনি যোগ করতে হবে Privacy - Photo Library Usage Descriptionসালে Info.plistএকটি সঙ্গে স্ট্রিং যে প্রদর্শিত হবে যখন আপনার অ্যাপ ব্যবহারকারী ফটোর লাইব্রেরি অ্যাক্সেস করতে প্রথমবার চেষ্টা করে।

চূড়ান্ত Info.plistসমন্বয়গুলি এর মতো দেখতে হবে: এখানে চিত্র বর্ণনা লিখুন


1

আমার একই ত্রুটি রয়েছে এবং আমি এটিকে এটি ঠিক করেছি:

ইমেজ অবজেক্টটি বিভিন্ন উপায়ে পান ইউআইআইমেজপিকার কনট্রোলার মঞ্জুরির উপর নির্ভর করে সম্পাদনাটি সত্য বা মিথ্যা

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if isImagePickerAllowEditing {
        sourceImage = info[UIImagePickerControllerEditedImage] as? UIImage
    } else {
        sourceImage = info[UIImagePickerControllerOriginalImage] as? UIImage
    }

    ....

}

এবং অবশ্যই উপরের মতামত হিসাবে ফটো লাইব্রেরি অ্যাক্সেস করার অনুমতি জিজ্ঞাসা করুন।


1

আমার শেষ প্রান্তে UINavigationControllerDelegateপ্রতিনিধি নিখোঁজ রয়েছে।

class YourViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate


0

আমি একই সমস্যা জুড়ে এসেছি। উপরের উল্লিখিত কোনও পরামর্শই আমার পক্ষে কাজ করেনি। যাইহোক, আমি এটির সমাধানকারীকে চয়নকারীকে কল করেছিলাম resolved এটি খারিজ করুন এবং পোস্টটি বরখাস্ত করুন। আমি কেন এই রকম বরখাস্ত কল করেছি তা পরিষ্কার নয়, তবে এটি আমার পক্ষে কাজ করেছিল worked

   @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        print("Image picked")
        picker.dismiss(animated: true, completion: nil)
        dismiss(animated: true) {
            print("dismissed")
             self.delegate?.presentEditor(img: (info[UIImagePickerControllerOriginalImage] as? UIImage)!, id: self.id!)
    }

}

0

আমি এই সমস্ত উত্তরগুলি পড়েছি এবং এখানে সামান্য কিছু সংশোধন করেছি এবং খারিজ করার দরকার নেই, এটি আমার পক্ষে কাজ করেছে, ধন্যবাদ যারা এখানে জবাব দিয়েছেন তাদের ধন্যবাদ।

    @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

      print("########### media picked")
      picker.dismiss(animated: true, completion: nil)
      let img = (info[UIImagePickerControllerOriginalImage] as? UIImage)!
      //set img -picked image to "profileImage" UIimageView
      //use image here
       self.profileImage.image = img
       }
    }

0

আমি ইমেজ পিকারভিউয়ের সমাধান পেয়েছি .....

@IBOutlet weak var myImageView: UIImageView!

var imagePicker = UIImagePickerController()


  @IBAction func selectImage(_ sender: Any) {

        let myPickerController = UIImagePickerController()
        myPickerController.delegate = self;
        myPickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary

        self.present(myPickerController, animated: true, completion: nil)

    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        print(info)

        var selectedImageFromPicker: UIImage?

        if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage
        {
            selectedImageFromPicker = editedImage as! UIImage


        }else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage{

            selectedImageFromPicker = originalImage as! UIImage


        }

        dismiss(animated: true, completion: nil)

        if var selectedImage = selectedImageFromPicker
        {
            myImageView.image = selectedImage
        }

    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }

0

ফটো লাইব্রেরি থেকে চিত্র লোড করতে ইমেজভিউতে ক্লিক করুন এবং একই চিত্রের ভিউতে পূর্বরূপ দেখান। দ্রুত 4 এ

 let imagePicker = UIImagePickerController()
        @IBOutlet weak var userImage: UIImageView! 

     override func viewDidLoad() {
                super.viewDidLoad()
                 imagePicker.delegate = self
                let tap = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.click))
                userImage.addGestureRecognizer(tap)
                userImage.isUserInteractionEnabled = true
            }

            @objc func click()
            {
                imagePicker.allowsEditing = false
                imagePicker.sourceType = .photoLibrary
                present(imagePicker, animated: true, completion: nil)
            }


            @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
                if  let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
                userImage.contentMode = .scaleAspectFit
                userImage.image = chosenImage
                }
                dismiss(animated: true, completion: nil)
            }

            func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
                dismiss(animated: true, completion: nil)
            }

0

সুইফট ৪.২ এবং এক্সকোড ১০.০ এ একই সমস্যা ছিল । যদিও চিত্র চয়নকারী সঠিকভাবে কাজ করছিল Xcode কনসোলে এই ত্রুটিটি দেখিয়েছে। এ থেকে মুক্তি পেতে:

  • এক্সকোড মেনুতে পণ্য> প্রকল্প> সম্পাদনা প্রকল্প Scheme
  • 'রান' ট্যাবটি নির্বাচন করুন, তারপরে 'যুক্তিগুলি'
  • 'পরিবেশ পরিবর্তনশীল' বিভাগে নামের সাথে একটি ভেরিয়েবল যুক্ত করুন OS_ACTIVITY_MODE এবং মান অক্ষম করুন

ঠিক আছে ... সত্যই নয় ... আমার জন্য এটি এই ত্রুটিটি দেখায় তবে ফিনিশপিকিংমিডিয়া উইথআইনফো পদ্ধতিটি বলা হয় না ... সুতরাং এই ত্রুটিটি দেখার জন্য আমার এই মানটি সক্রিয় করার দরকার ছিল
মোহাম্মদ লি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.