1. 程式人生 > >呼叫相簿UIImagePickerController報錯 Error Domain=PlugInKit Code=13 的處理

呼叫相簿UIImagePickerController報錯 Error Domain=PlugInKit Code=13 的處理

      最近將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!)()