SwiftUI 将图像保存到 macOS Catalyst

Posted

技术标签:

【中文标题】SwiftUI 将图像保存到 macOS Catalyst【英文标题】:SwiftUI Saving Image to macOS Catalyst 【发布时间】:2021-03-01 16:38:24 【问题描述】:

我正在尝试使用以下代码在 macOS Catalyst 应用程序上保存图像。取自SwiftUI Catalyst App in macOS computer - Which path should I use to save an image in my Mac local disk?

但是我收到错误"The file "abstract-1.jpg" doesn't exist."

我的 Assets.xcassets 文件夹中有图像 abstract-1,所以我不确定为什么在此保存操作中看不到它?我也试过只使用item.name 而不附加 .jpg 但它会产生相同的错误。有任何想法吗?谢谢!

Button(action: 
                                        let fileURL = URL(fileURLWithPath: self.pathURL, isDirectory: true)
                                        let nameImage = item.name + ".jpg"
                                        let fileURLwithName = fileURL.appendingPathComponent(nameImage)
                                        let imageData = UIImage(named: item.name)?.jpegData(compressionQuality: 1)
                                        do 
                                            try imageData!.write(to: fileURLwithName)
                                         catch 
                                            print("** saveImageData error: \(error.localizedDescription)")
                                        
                                    ) 
                                            Label("Save to Pictures Directory", systemImage: "square.and.arrow.down")
                                        

【问题讨论】:

【参考方案1】:

原来我需要做两件事:

    不要在我的 pathURL 中使用 ~/Pictures 之类的东西。这需要像@State private var pathURL = "/Users/jimbob/Desktop/" 一样明确声明 在 appname.entitlements 中将 App Sandbox 更改为 NO

现在尝试获取用户的主目录路径,或者弹出“保存位置”对话框。

【讨论】:

以上是关于SwiftUI 将图像保存到 macOS Catalyst的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI (macOS) 中拖放未捆绑的图像

SwiftUI ImagePicker 保存(图像-> UIImage--> 数据)到核心数据

如何使用 NSRefreshTemplate 图像创建 macOS SwiftUI 按钮?

在 SwiftUI 中使用系统图标和 macOS 作为按钮

将数据从简单的 NSView 传递到 SwiftUI 视图

如何使用 SwiftUI 向 macOS 应用程序添加工具栏?