LoginSignup
3
4

More than 1 year has passed since last update.

【Swift】URLから画像を保存する

Last updated at Posted at 2022-07-31

はじめに

画像を保存する機能を作る機会があったので今後再利用することも考えて記事に残しておきます。

事前設定

Info.plistに以下を設定
NSPhotoLibraryAddUsageDescription

実装

class ViewModel: NSObject, ObservableObject {
    // 画像保存
    public func savingImage(url: String) {
        guard let url = URL(string: url) else {
            print("エラー")
            return
        }
        do {
            let data = try Data(contentsOf: url)
            guard let image = UIImage(data: data) else {
                print("エラー")
                return
            }
            UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.didFinishSavingImage), nil)
        } catch {
            print("エラー")
        }
    }

    @objc private func didFinishSavingImage(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
        if error == nil {
            print("成功")
        } else {
            print("失敗")
        }
    }
}

注意点
NSObjectは必須です。

使い方

struct ContentView: View {
    @ObservedObject private var viewModel = ViewModel()
    var body: some View {
        Button("画像保存") {
            viewModel.savingImage(url: "https://taishin-miyamoto.com/ShadowBan/image/shadow_ban_icon.png")
        }
    }
}

おわり

NSPhotoLibraryAddUsageDescriptionの設定を忘れがち
やってないとクラッシュします

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4