【问题标题】:i have an issue on the file System on the actual device我在实际设备上的文件系统上有问题
【发布时间】:2017-02-04 19:31:18
【问题描述】:

我的问题是当我尝试将图像从照片库复制到文件系统时,我收到错误错误是

(错误域=NSCocoaErrorDomain Code=257 "文件“IMG_0926.JPG” 无法打开,因为您无权查看。” UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0926.JPG, NSUnderlyingError=0x15649630 {错误域=NSPOSIXErrorDomain 代码=1 "不允许操作"}})

我的代码是:

let fileManager = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let document = fileManager[0]
    var i = 0
    for asset in arrayOfAssets {
        let filePath = document.appendingPathComponent("image\(arrayOfAssets.count + i).png")
        i += 1
        PHImageManager.default().requestImageData(for: asset, options: nil) { (data, nil, _ , info) in
            let url = info?["PHImageFileURLKey"] as! NSURL
            do {
                  try FileManager.default.copyItem(at: url as URL, to: filePath)

            }catch {
                print(error)
            }

           // print(filePath)
        }
    }

如果有人可以帮助我,请帮助我

谢谢大家

【问题讨论】:

  • 你从哪里得到这些资产?? arrayOfAssets可以给我看看这个数组数据填充代码吗?
  • func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { arrayOfAssets.append(phasset[indexPath.row]) }
  • 从 didSelectItemInCollectionView 和阶段 [indexPath.row] 我在获取资产时从 viewdidLoad 获取它

标签: ios swift3 file-manager phasset


【解决方案1】:

听起来您正试图打开位于此处的文件:NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0926.JPG

默认情况下不允许访问此目录,出于安全原因,您只能访问位于文档目录中的文件。

我在您的代码中找不到此 URL 的来源,但根据 NSError,您正在尝试访问文件系统允许区域之外的图像。

【讨论】:

    【解决方案2】:

    请检查 iOS 11 中照片库的 plist 中的权限选项。

    您还可以将数据保存在 TEMP 目录中,并在需要时和使用后获取它

    清理 TEMP 目录中的数据。

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 2018-04-19
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      相关资源
      最近更新 更多