我是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 let
或if let
展开