我是Swift的新手,我正在尝试使用闭包从ViewController返回结果
这是例子
class MD5Calculator {
static func imageChecksum(imageArray: [UIImage], onCalculated: @escaping () -> [String]){
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 {
//return array
}
}
}
}
我想在后台进行md5计算,完成后将其传递给viewController。
我创建了闭包,但是我不知道如何返回它。
我的问题是:
如何通过闭包传递字符串数组
如何在视图控制器中调用ImageChecksum
最佳答案
您对闭包的使用无效。您要发回的数组应该是闭包的参数,而不是返回类型。
这应该工作
class MD5Calculator {
static func imageChecksum(imageArray: [UIImage], onCalculated: @escaping ([String]) -> ()){
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 {
//return array
onCalculated(array)
}
}
}
}
编辑:像这样在您的ViewController中使用它
MD5Calculator.imageChecksum(imageArray: [imageArray]) { array in
// 'array' is your returned result
}
关于ios - 如何使用闭包返回数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42338338/