こんにちは。早速本題です。
下記のコードにてimageView内の画像を保存しようとしています。
swift
1@IBAction func imageSave(_ sender: Any) { 2 3 let targetImage = zoomImage.image //zoomImageはUIImage 4 5 UIImageWriteToSavedPhotosAlbum(targetImage!,self,#selector(showResultOfSaveImage(_:didFinishSavingWithError:contextInfo:)),nil) 6 } 7 8 @objc func showResultOfSaveImage(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeMutableRawPointer) { 9 10 var title = "保存完了" 11 var message = "カメラロールに保存しました" 12 if error != nil { 13 title = "エラー" 14 message = "保存に失敗しました" 15 } 16 let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) 17 // OKボタンを追加 18 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 19 // UIAlertController を表示 20 self.present(alert, animated: true, completion: nil) 21 } 22
Info.plistのNSPhotoLibraryAddUsageDescriptionキーには他のメソッド(画像を取得する)を実装する時にvalueを「カメラロールの写真を表示します」として設定しています。
imageSaveを押すとアプリが落ちます。
libsystem_kernel.dylib`__abort_with_payload:というところでエラーが起きています。 UIImageWriteToSavedPhotosAlbum()で止まっています。
なぜアプリが落ちてしまうのでしょうか。必要な情報があればお聞きください。分かる方返信お待ちしています。
Consoleにエラーメッセージが表示されていないですか?
[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.このように表示されています
Google翻訳「このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとしたためクラッシュしました。アプリのInfo.plistには、NSPhotoLibraryAddUsageDescriptionキーと、アプリがこのデータをどのように使用するかを説明する文字列値が含まれている必要があります。」
回答2件
あなたの回答
tips
プレビュー