在 swift 中无法访问文档文件路径

Document file path unreachable in swift

我目前正在开发一个小型 swift 应用程序,我将一些视频记录存储在该应用程序的文档文件夹中。我想稍后取回这些。我已经有了这样的文件位置数组:

file:///private/var/mobile/Containers/Data/Application/6C462C4E-05E2-436F-B2E6-F6D9AAAC9361/Documents/videorecords/196F9A75-28C4-4B65-A06B-6111AEF85F01.mov

现在我想使用这样的文件位置来创建第一帧的缩略图,并使用以下代码将其连接到我的图像视图:

func createVideoStills() {
    for video in directoryContents {
        print("\(video)")
        do {
            let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "\(video)"), options: nil)
            let imgGenerator = AVAssetImageGenerator(asset: asset)
            imgGenerator.appliesPreferredTrackTransform = true
            let cgImage = try imgGenerator.copyCGImageAtTime(CMTimeMake(0, 1), actualTime: nil)
            let uiImage = UIImage(CGImage: cgImage)
            videoCell.imageView = UIImageView(image: uiImage)
            //let imageView = UIImageView(image: uiImage)
        } catch let error as NSError {
            print("Error generating thumbnail: \(error)")
        }
    }
}

第一个打印给了我一个如上所述的路径。但是 AVURLAsset 不喜欢这条路径,因为它吐出以下错误:

Error generating thumbnail: Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server." UserInfo={NSLocalizedDescription=The requested URL was not found on this server., NSUnderlyingError=0x14ee29170 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

这很奇怪,因为它就在那里。关于如何 fix/solve 这个的任何解决方案?

亲切的问候,

沃特

您的 print("\(video)") 的输出不是文件 path 而是文件 URL 的字符串表示.您需要使用 init(string:) 而不是 NSURLinit(fileURLWithPath:)

看看你得到了什么:

            let asset = AVURLAsset(URL: NSURL(string: video), options: nil)

(不必要的字符串插值会产生一些意想不到的结果而不会出错——比如得到 "Optional(...)",所以你应该避免。)