ios - 在 swift 中使用 PHImageManager (requestAVAssetForVideo)

标签 ios swift phasset timelapse

我正在使用 objective-c 图像选择器图像选择器来选择时间流逝,但我正在快速进行。我只能访问 objective-c 代码,所以我使用了 objective-c 到 swift 转换器,但出现错误。

func qb_imagePickerController(imagePickerController: QBImagePickerController, didFinishPickingAssets assets: [AnyObject]) {
    for asset in assets as! [PHAsset] {
        PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset, audioMix: AVAudioMix, info: [NSObject : AnyObject]) -> Void in
            var url: NSURL = NSURL(string: "\(asset)")!
            var avAsset: AVURLAsset = AVURLAsset(URL: url, options: nil)
            var playerItem: AVPlayerItem = AVPlayerItem(asset: avAsset)
            var videoPlayer: AVPlayer = AVPlayer(playerItem: playerItem)
            videoPlayer.play()
        })
    }
    self.dismissViewControllerAnimated(true, completion: { _ in })
}

这是我目前的代码。我收到的错误如下。

Cannot convert value of type '(AVAsset, AVAudioMix, [NSObject : AnyObject]) -> Void' to expected argument type '(AVAsset?, AVAudioMix?, [NSObject : AnyObject]?) -> Void'

最佳答案

查看 requestAVAssetForVideo:options:resultHandler: 的文档 您拥有的 resultHandler 与所需的签名不匹配。

改变这一行:

PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset, audioMix: AVAudioMix, info: [NSObject : AnyObject]) -> Void in

到:

PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) -> Void in

注意在预期位置添加 ?

关于ios - 在 swift 中使用 PHImageManager (requestAVAssetForVideo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364193/

相关文章:

ios - 在 iOS 中从 0.pool.ntp.org 检索时间

ios - 设置多色选项卡栏图标而不是单色图标

ios - 检查给定的 PHAsset 是 iCloud Assets 吗?

ios - 如何将 PHAsset 的引用从 "All Photos"/"Camera Roll"移动到特定的 PHAssetCollection?

ios - CoreData 未触发故障

ios - App Store Receipt 有时会返回意外的收据

objective-c - 设置应用程序首次运行时的默认位置

ios - 属性 setter responseToSelector

ios - (SWIFT 3) 创建父子托管对象上下文

ios - 如何将多个视频保存到应用程序文档目录中?