Ошибка быстрой игры: дополнительный аргумент 'timeout' в вызове - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь запустить этот код на детской площадке:

//: Playground - noun: a place where people can play

import UIKit
import XCTest

// Create an expectation for a background download task.
let expectation = XCTestExpectation(description: "Download apple.com home page")

// Create a URL for a web page to be downloaded.
let url = URL(string: "https://apple.com")!

// Create a background task to download the web page.
let dataTask = URLSession.shared.dataTask(with: url) { (data, _, _) in

    // Make sure we downloaded some data.
    XCTAssertNotNil(data, "No data was downloaded.")

    // Fulfill the expectation to indicate that the background task has finished successfully.
    expectation.fulfill()

}

// Start the download task.
dataTask.resume()

// Wait until the expectation is fulfilled, with a timeout of 10 seconds.
wait(for: [expectation], timeout: 10.0)

Я скопировал его из https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations

Я получаю ошибку:

Playground execution failed:

error: MyPlayground2.playground:21:35: error: extra argument 'timeout' in call
wait(for: [expectation], timeout: 10.0)
                                  ^~~~

Почему я получаю эту ошибку на детской площадке?При использовании wait (for: timeout :) в обычном проекте это работает.

1 Ответ

0 голосов
/ 28 июня 2018

Как отмечает Шрипада :

Эта ошибка возникнет, если возникнет конфликт между методом класса / структуры и глобальным методом с тем же именем, но с разными аргументами.

Чтобы успешно использовать метод класса на игровой площадке, добавьте к имени класса префикс для устранения неоднозначности XCTWaiter.wait (для: timeout:) :

XCTWaiter.wait(for: [expectation], timeout: 10.0)

С другой стороны, если однажды вы захотите использовать конфликтующий метод из wait.h , который имеет подпись Swift public func wait(_: UnsafeMutablePointer<Int32>!) -> pid_t, вы можете поставить перед ним префикс имени модуля Дарвина:

Darwin.wait()
...