使用 Swift 和 iOS 保存文件

Posted

技术标签:

【中文标题】使用 Swift 和 iOS 保存文件【英文标题】:Save file using Swift and iOS 【发布时间】:2020-01-11 13:33:38 【问题描述】:

我有一个 ios 应用程序,我需要能够在我的 iCloud Drive 上选择一个文件,修改该文件,并使用新的扩展名保存修改后的文件。我已经尝试了很多东西,但我仍然无法编写新文件。这是我最新的代码:

documentPickerViewController = DocumentPickerViewController(documentTypes: ["public.item"], in: .open)  
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL])   
    let fileURL = urls[0]  
    do   
        // Read the file       
        _ = fileURL.startAccessingSecurityScopedResource()  
        let fileData = try Data(contentsOf: fileURL, options: .uncached)  
        fileURL.stopAccessingSecurityScopedResource()  

        // write the file  
        let fileCopyURL = fileURL.appendingPathExtension("copy")  
        _ = fileCopyURL.startAccessingSecurityScopedResource()  
        try fileData.write(to: fileCopyURL)  
        fileCopyURL.stopAccessingSecurityScopedResource()  
      
    catch   
        print(error.localizedDescription)  
      
  

当我在 iCloud Drive 上选择文件时,我收到以下错误:

您无权将“TestFile.txt.copy”文件保存在“Test Files”文件夹中。

如何保存修改后的文件?

【问题讨论】:

【参考方案1】:

首先,我认为您应该确保您拥有正确的权利/权限来写入 iCloud Drive:

如果这仍然不起作用,请尝试更新您的应用程序的 CFBundleVersion 或内部版本号,并确保您的 Bundle Identifier(在 Signing & Capabilities 的第一部分中)已正确注册到您的 Apple 开发者帐户中。

根据您的代码,您尝试完成的工作是可行的,但问题来自其他地方。

如果您在执行这些步骤后遇到问题,请告诉我。祝你好运!

【讨论】:

感谢您的建议,但很遗憾他们没有提供帮助。 @JeffZacharias 根据您的代码,您正在尝试复制一个文件,我不确定这是否可行(至少您这样做的方式)。尝试使用copyItemAtPath。 我已经尝试过了,但我得到了同样的错误。好像我读到当您使用 UIDocumentPickerViewController 或 UIDocumentBroswerPicker 时,您只能访问选择的文件,但我找不到我在哪里读到的。 那么我必须说实话:我不知道出了什么问题。对不起?。 @JeffZacharias

以上是关于使用 Swift 和 iOS 保存文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档

如何在 iOS/Swift 2 上使用 PHPhotoLibrary 保存具有自定义文件名的照片?

使用CameraManager和Swift将捕获的视频保存到iOS库

文件目录更改每次重启 Swift iOS

使用swift在iOS上本地保存和检索包含所有元数据的照片

iOS Swift - 在 UIImage 上画线以保存到文件