如何在 iOS 中使用 Swift/SwiftUI 将我从应用数据导出的文本文件移动到应用沙箱之外的位置?
Posted
技术标签:
【中文标题】如何在 iOS 中使用 Swift/SwiftUI 将我从应用数据导出的文本文件移动到应用沙箱之外的位置?【英文标题】:How do I move a text file I exported from app data to a place outside the app's sandbox using Swift/SwiftUI in iOS? 【发布时间】:2020-02-23 11:18:04 【问题描述】:我有一个通常为用户存储数据的应用。一切正常,但我想让用户有机会将数据导出到 CSV 并按照他们的意愿进行操作。
现在,我有 CSV,但它们位于应用程序的沙箱内,对用户来说非常困难且不友好。如何将这些移动到应用程序沙箱之外的位置,移动到用户更熟悉的位置,例如 iCloud 中的 Documents 文件夹或 Downloads 文件夹?
SwiftUI 解决方案会很棒,但 Swift 也可以!
因为我完全被难住了,所以我没有代码可以显示。
【问题讨论】:
没有 SwiftUI 组件。您可以使用UIDocumentPickerViewController
的实例让用户将文件导出到方便的地方,例如文件应用程序或Dropbox 等云存储位置。
@Paulw11 好的,我可以用可表示的形式包装 UIDocumentPickerViewController。谢谢!顺便说一句……你照片中的 Tandy Model 2 是吗?
【参考方案1】:
感谢@Paulw11 的指导!我很不确定如何去做,但它非常简单!
在创建导出文件时,我将 URL 保存到一个数组中。然后我将它们传递给我使用 UIDocumentPickerViewController 实现的 UIViewControllerRepresentable (用于 SwiftUI)的结构。
结构如下所示:
import SwiftUI
import UIKit
struct DocumentPicker: UIViewControllerRepresentable
var URLs: [URL]
func makeUIViewController(context: UIViewControllerRepresentableContext<DocumentPicker>) ->
UIDocumentPickerViewController
let picker = UIDocumentPickerViewController(urls: URLs, in: .moveToService)
return picker
func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: UIViewControllerRepresentableContext<DocumentPicker>)
您最终将所有文件都准备好移动到用户选择的位置:
【讨论】:
以上是关于如何在 iOS 中使用 Swift/SwiftUI 将我从应用数据导出的文本文件移动到应用沙箱之外的位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 5 /SwiftUI 将 AVAudioRecorder 文件上传到 Firebase 存储?
如何构造值以使所有视图都可以在 Swift/SwiftUI 中访问其值?
如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名
如何在swift / SwiftUI中为滑动手势设置菜单栏图标的操作