Неявное использование себя в закрытии Swift - PullRequest
0 голосов
/ 30 апреля 2019

У меня следующий тестовый класс:

import XCTest
@testable import DogYears

class DogYearsTests: XCTestCase {

    let calc = Calculator()
    var resData: Data? = nil

    override func setUp() {
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testResult(){
        let res1 = calc.evaluate(op: "+", arg1: 2.0, arg2: 9.0)
        let res2 = calc.result
        XCTAssert(res1 == res2)
    }

    func testInfoLoading(){

        let url = "https://raw.githubusercontent.com/FahimF/Test/master/DogYears-Info.rtf"
        HTTPClient.shared.get(url: url) { (data, error) in
            XCTAssertNil(error)
            XCTAssertNotNil(data, "empty data")
            self.resData = data
            let predicate = NSPredicate(format: "resData != nil")
            let exp = expectation(for: predicate, evaluatedWith: nil, handler: nil)

        }
    }
}

На линии:

 let exp = expectation(for: predicate, evaluatedWith: nil, handler: nil)

Компилятор предупреждает меня красной ошибкой:

Неявное использование «я» в закрытии; используйте «я». сделать семантику захвата явной

Но я не использую собственные переменные. Почему не компилируется?

1 Ответ

2 голосов
/ 01 мая 2019

Поскольку DogYearsTests наследуется от XCTestCase, ожидание - это метод вашего класса, поэтому вы должны вызывать его с помощью self.

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