所以当我从委托(delegate)方法接收到一些东西时,我试图创建一个闭包:
typealias CompletionResponse = ((_ response: AnyObject) -> Void)?
class SomeClass {
static let shared = SomeClass()
var completion: CompletionResponse?
func getSomthing(completion: CompletionResponse) {
self.completion = completion
}
func someDelegateMethode(info: [String]) {
// Error is here
if let completion = self.completion {
completion(info)
}
}
}
_ = SomeClass.shared
SomeClass.shared
SomeClass.shared.getSomthing { (obj) in
print(obj as! [String])
}
SomeClass.shared.someDelegateMethod(info: ["Hello", "There"])
我不知道该怎么做.. 感谢您的帮助。
收到错误:
无法调用非函数类型“CompletionResponse”(又名“Optional<(AnyObject) -> ()>”)的值
谢谢
最佳答案
从类型别名中删除可选。编译器不理解如何调用 completion
,因为它有一个 double 可选类型。
此外,您可以使用可选链接而不是 if let
。
self.completion?(info)
关于有委托(delegate)的 Swift 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48330845/