Ошибка сборки Swift: ожидаемое имя в списке захвата закрытия - PullRequest
0 голосов
/ 23 октября 2019

Я довольно новичок в 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

Что это значит икак это исправить?

1 Ответ

1 голос
/ 23 октября 2019

Это глупая ошибка TYPO для [weak, self]

Замените ваш код на

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

, и, поскольку вы использовали слабое Я , вы можете использовать self? или разверните его с помощью guard let или if let

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...