Ios 相位集拷贝视频完成

Ios 相位集拷贝视频完成,ios,swift,nsfilemanager,phasset,file-manager,Ios,Swift,Nsfilemanager,Phasset,File Manager,我希望将视频文件从照片库复制到我的应用程序的文档目录,并希望收到有关完成的通知。以下是我的工作: let videoAsset = fetchResult.object(at: indexPath.item) print(videoAsset.description) let options = PHVideoRequestOptions() options.version = .original PHImageManager.default().re

我希望将视频文件从照片库复制到我的应用程序的文档目录,并希望收到有关完成的通知。以下是我的工作:

    let videoAsset = fetchResult.object(at: indexPath.item)
    print(videoAsset.description)

    let options = PHVideoRequestOptions()
    options.version = .original

    PHImageManager.default().requestAVAsset(forVideo: videoAsset, options: options) { [weak self] (avAsset, audioMix, info) in

        if let avurlAsset = avAsset as? AVURLAsset {
            let url = avurlAsset.url
            let toUrl = //some Url
            let fileManager = FileManager.default

            do {
              try fileManager.copyItem(at: url, to: toUrl)
            } catch {
               NSLog("Unable to copy file from \(url) to \(toUrl)")
            }
        }
    }
这种方法的唯一问题是,我没有办法在copyItem完成时得到通知。除了copyItem方法(或者与上述方法完全不同的方法)之外,还有什么方法可以至少在复制完成之前阻止复制?是否可以使用FileHandle&读取连续字节并写入另一个文件?这足够同步吗

编辑:正如Alex所指出的,copyItem实际上是同步例程。仔细观察,我发现我有时会在复制时出错。不确定在我复制的应用程序的文档文件夹中显示权限错误的原因

  2018-08-27 20:30:07.485841+0530 MyProject[3577:1288452] Copying file...
2018-08-27 20:30:07.487880+0530 MyProject[3577:1288452] stat on /var/mobile/Media/DCIM/107APPLE/IMG_7915.MP4: Operation not permitted
2018-08-27 20:30:07.512994+0530
 MyProject[3577:1288452] Unable to copy file from    file:///var/mobile/Media/DCIM/107APPLE/IMG_7915.MP4 to    file:///var/mobile/Containers/Data/Application/CC13FD5A-E4CF-42A1-931F-2F1FFE799C15/Documents/IMG-0027.mov, Error Domain=NSCocoaErrorDomain Code=513 "“IMG_7915.MP4” couldn’t be copied because you don’t have permission to access “Documents”." UserInfo=   
{NSSourceFilePathErrorKey=/var/mobile/Media/DCIM/107APPLE/IMG_7915.MP4,    NSUserStringVariant=(
   Copy
  ),   

  NSDestinationFilePath=/var/mobile/Containers/Data/Application/CC13FD5A-E4CF-42A1-931F-2F1FFE799C15/Documents/IMG-0027.mov, NSFilePath=/var/mobile/Media/DCIM/107APPLE/IMG_7915.MP4, NSUnderlyingError=0x111c441c0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

Copyitem:将指定路径上的项目同步复制到新位置

如果项目复制成功或文件管理器的委托故意停止操作,则返回true。如果发生错误,则返回false

这是一个同步方法,因此,在捕获后执行后,如果没有错误,则表示复制成功


似乎确实存在复制错误。我已使用编辑更新了问题。请尝试根据您的日志将权限添加到plist中。因为上面写着:因为你没有访问“文档”的权限。