【问题标题】:Writing file to iCloud drive Error Domain=NSCocoaErrorDomain Code=256将文件写入 iCloud 驱动器错误域 = NSCocoaErrorDomain 代码 = 256
【发布时间】:2019-01-02 06:57:11
【问题描述】:

我正在尝试将文件从沙盒应用程序的本地存储发送到 icloud 驱动器。 不幸的是,我收到了这个错误:

错误域=NSCocoaErrorDomain 代码=256“Soubor „About.txt”无法打开。” UserInfo={NSURL=file:///var/mobile/Containers/Data/Application/1626D575-64CF-4B61-B6B1 -38F0B76ED135/Documents/path/path/About.txt, NSUserStringVariant=( “无法在未同步的项目上禁用同步。” ), NSUnderlyingError=0x13d819630 {Error Domain=NSPOSIXErrorDomain Code=37 "Operation already in progress"}}

我的代码如下:

struct DocumentsDirectory {
    static let localDocumentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
    static let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")
}

复制功能:

func copyFileFromLocacPathToIcloud (fileName:String, filePath:URL, folderName:String) {
   let fileManager = FileManager.default
   if (ICloudUtils.isiCloudEnabled(icloudURL: DocumentsDirectory.iCloudDocumentsURL)) {
      let fileUrl = DocumentsDirectory.localDocumentsURL!.appendingPathComponent("path", isDirectory: true).appendingPathComponent("path", isDirectory:true).appendingPathComponent("About.txt")
      if fileUrl.startAccessingSecurityScopedResource() {

      }
      Log.dbg(msg: "file exists at location \(fileManager.fileExists(atPath: fileUrl.path)) \(fileUrl)")
      let iCLoudURL = DocumentsDirectory.iCloudDocumentsURL?.appendingPathComponent(fileName)
      do {
         try fileManager.setUbiquitous(false, itemAt: fileUrl, destinationURL: iCLoudURL!)
      }catch {
        Log.error(msg: "icloud save file \(error)")
        fileUrl.stopAccessingSecurityScopedResource()

    }
  }
}

我有 iCloud 的功能。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: ios swift icloud


    【解决方案1】:

    我知道这个问题很老,但出现在谷歌搜索中,因此它可能对其他人有所帮助。 根据this doc,当您尝试将文件发送到 iCloud 时,您应该将该标志设置为 true。你在哪里使用 false 是从 iCloud 中删除文件。基本上改行:

    try fileManager.setUbiquitous(false, itemAt: fileUrl, destinationURL: iCLoudURL!)

    到:

    try fileManager.setUbiquitous(true, itemAt: fileUrl, destinationURL: iCLoudURL!)

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 2019-08-31
      • 2012-04-23
      • 2017-06-16
      • 2020-05-06
      • 2018-04-08
      • 2015-03-11
      • 2018-07-21
      • 2020-03-14
      相关资源
      最近更新 更多