Уча Swift3, докато работя върху мигриращия кодот swift 2.2 до swift 3. Сега оставам с една грешка и няколко предупреждения. Имам нужда от помощ за грешката. Опитвате се да получите достъп до URL адреса във вид на AVAsset. Всяка помощ или урок, който мога да получа от това, ще бъдат много оценявани.
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...!")
}
})
}
Грешката е показана на картинката по-горе
различен опит
Отговори:
1 за отговор № 1avAsset
е кортеж, към който трябва да влезете AVAsset
обект, използвайки индекс на 0
, Също така, тъй като това е по избор, можете да използвате flatMap за да я модифицирате по избор videoData
.
for (i, dkAsset) in assets.enumerated() {
dkAsset.fetchAVAssetWithCompleteBlock { avAsset in
if let data = (avAsset as? AVURLAsset).flatMap({
NSData(contentsOf: $0.url)
}) {
if data.write(
to: URL(
fileURLWithPath: NSTemporaryDirectory() + "tmpMovie(i).MOV"
),
atomically: true
) {
print("success")
} else {
print("write failure")
}
} else {
print("cast/read failure")
}
}
}