Я должен вычислить контрольную сумму из выбранных файлов (изображения, видео)Рассчитайте видео файл md5 (хэш)
в моем расчете изображения коды, работающих большой, но видео расчета не работает вообще.
Я использую CryptoSwift
Вот мой код, что я сделал
import CryptoSwift
class MD5Calculator {
static func imageChecksum(imageArray: [UIImage], onCalculated: @escaping ([String]) -> Void){
DispatchQueue.global(qos: .userInitiated).async {
var array: [String] = []
for chosenImage in imageArray {
if let jpegData = UIImageJPEGRepresentation(chosenImage, 80) {
let checksum = jpegData.md5()
let chsum = checksum.toHexString()
array.append(chsum)
}
}
DispatchQueue.main.async {
onCalculated(array)
}
}
}
static func videoChecksum(videoURLs:[NSURL], onCalculated: @escaping ([String]) -> Void) {
DispatchQueue.global(qos: .userInitiated).async {
var array: [String] = []
for url in videoURLs {
if let videoData = Data(contentsOf: url as URL, options: Data.ReadingOptions) {
let checksum = videoData.md5()
let chsum = checksum.toHexString()
array.append(chsum)
}
}
DispatchQueue.main.async {
onCalculated(array)
}
}
}
}
в videoChecksum я не могу получить данные у меня есть синтаксическая ошибка в строке
if let videoData = Data(contentsOf: url as URL, options: Data.ReadingOptions)
Ошибка:
Cannot convert value of type 'Data.ReadingOptions.Type' (aka 'NSData.ReadingOptions.Type') to expected argument type 'Data.ReadingOptions' (aka 'NSData.ReadingOptions')
И это класс данных Конструктор
public init(contentsOf url: URL, options: Data.ReadingOptions = default) throws
Мой вопрос
1. как я могу получить данные о видеофайле
2. Если есть другой способ, чтобы получить данные и рассчитать контрольная сумма, пожалуйста, предложите мне
3. Если вы знаете, какую синтаксическую ошибку, пожалуйста, скажите мне, как это исправить.
спасибо. Вы спасли мою жизнь. – fish40
Рад слышать :) Также см. Мое редактирование об обработке исключений. – Olivier