呼叫相簿UIImagePickerController報錯 Error Domain=PlugInKit Code=13 的處理
阿新 • • 發佈:2019-02-20
最近將Swift4 升級到最新的 Swift4.2,發現了一些問題,其中就包括 呼叫相簿及拍照 UIImagePickerControllerDelegate 委託不執行,導致獲取不到選中的圖片並且報如下錯誤:
[discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
應改寫為如下方式,方可正常執行的,並且不會報錯
//正確的寫法 //MARK: - UIImagePickerControllerDelegate、UINavigationControllerDelegate func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { //UIImagePickerControllerOriginalImage 原始影象 //UIImagePickerControllerEditedImage 編輯後的圖片(開啟編輯該物件才存在) self.dismiss(animated: true, completion: { var img:UIImage? = info[UIImagePickerController.InfoKey.originalImage] as? UIImage if picker.allowsEditing { img = info[UIImagePickerController.InfoKey.editedImage] as? UIImage } self._image = img }) }
另外,補充一點在Swift4.2中,將UIImage 轉換為 Data 型別,具體參考如下:
//compressionQuality:引數為壓縮率 取值 0-1 的浮點數
//image:UIImage 物件
let imageData:Data? = UIImage.jpegData(image!)(compressionQuality: K_TAILOR_COMPRESSION_RATIO)!
//類似的還有
let imageData:Data? = UIImage.pngData(image!)()