元组类型 '(AVAsset?,[ AnyHashable : Any]?)' 的值没有成员 'url'

value of tuple type '(AVAsset?,[ AnyHashable : Any]?)' has no member 'url'

我正在学习 Swift3,因为我正在将代码从 swift 2.2 迁移到 swift 3。我现在遇到一个错误和几个警告。我需要有关错误的帮助。尝试访问类型 AVAsset 中的 url 值。如果我能从中得到任何帮助或教训,我将不胜感激。

for index in 0...(assets.count - 1){
   assets[index].fetchAVAssetWithCompleteBlock({ (avAsset) -> Void in
    if let fileURL = avAsset.url{
        let videoData = NSData(contentsOf: fileURL as URL)
        // optionally, write the video to the temp directory
        let videoPath = NSTemporaryDirectory() + "tmpMovie\(index).MOV"
        let videoURL = NSURL(fileURLWithPath: videoPath)
        let writeResult = videoData?.write(to: videoURL as URL, atomically: true)
        if let writeResult = writeResult, writeResult {
           print("success")
        }
        else {
             print("failure")
        }
         self.arrSelectedGalleryMedia.add(videoURL)
        if self.arrSelectedGalleryMedia.count >= assets.count{
             self.UploadVideo()
        }
     }
   else {
        print("error...!")
     }
   })
}

错误如上图

不同的尝试

avAsset 是一个元组,您必须使用索引 0 访问 AVAsset 对象。此外,由于它是可选的,您可以使用 flatMap 有选择地将其操作为 videoData.

for (i, dkAsset) in assets.enumerated() {
    dkAsset.fetchAVAssetWithCompleteBlock { avAsset in
        if let data = (avAsset as? AVURLAsset).flatMap({
            NSData(contentsOf: [=10=].url)
        }) {
            if data.write(
                to: URL(
                    fileURLWithPath: NSTemporaryDirectory() + "tmpMovie\(i).MOV"
                ),
                atomically: true
            ) {
                print("success")
            } else {
                print("write failure")
            }
        } else {
            print("cast/read failure")
        }
    }
}