Swift生成错误:闭包捕获列表中应为的名称



我是Swift的新手。

我很想用这个代码在TextView中显示动态文本

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var m_logView: UITextView!
private let m_log = Log()
override func viewDidLoad() {
super.viewDidLoad()
addLog(msg: "Hello World!")
m_log.requestData{ [weak, self] (data: String) in   // ### Build error points at this line!
self.useData(log: data)
}
}
func useData(log: String) {
addLog(msg: log)
}
func addLog(msg: String) {
m_logView.text += msg + "n"
}
}
class Log {
func requestData(completion: (_ data: String) -> Void) {
let data = "Data from wherever"
completion(data)
}
}

但我得到了一个编译器错误:

Expected name of in closure capture list

这意味着什么以及如何解决?

这是[weak, self]上愚蠢的TYPO错误

用替换您的代码

m_log.requestData{ [weak self] (data: String) in   
self?.useData(log: data)
}

并且由于您使用了弱自我,您可以使用自我或用guard letif let展开

最新更新