Grand Central Dispatch со Swift: использование неразрешенного идентификатора GCD

Недавно я взял книгу Swift High Performance и попробовал один из примеров, связанных с Apple Grand Central Dispatch (GCD). Я помещаю следующий код в файл Playground:

import Foundation
//import XCPlayground
//XCPSetExecutionShouldContinueIndefinitely()

class SalesData {

    var revenue: [Int]
    var average: Int?

    init (revenue: [Int]) {
        self.revenue = revenue
    }

    func calculateAverage() {

        let queue = GCD.backgroundQueue()
        dispatch_async(queue) {

        var sum = 0
        for index in self.revenue.indices {
            sum += self.revenue[index]
        }

        self.average = sum / self.revenue.count
    }
}

Отрывок из статьи «Swift High Performance».

Однако, как видно на прикрепленном снимке экрана, XCode сообщает мне, что существует Use of unresolved identifier GCD . Есть идеи, что мне здесь не хватает?

Спасибо!


person sbstnbelle    schedule 09.02.2016    source источник
comment
Нет такого класса с именем GCD. Если вы хотите получить фоновую очередь, вы можете использовать этот dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.rawValue), 0)   -  person Breek    schedule 10.02.2016
comment
У @Breek есть твой ответ. С обновлениями Swift теперь вы можете делать dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)){ //code to run on background queue }   -  person MikeG    schedule 10.02.2016


Ответы (1)


В книге они определяют структуру с именем GCD, которая предоставляет этот метод. Таким образом, вы должны заглянуть в книгу, чтобы получить остальную часть кода, который вам нужен для примера.

РЕДАКТИРОВАТЬ:

Это структура GCD, которую предоставляет книга:

struct GCD {
    static func backgroundQueue() -> dispatch_queue_t {
        return dispatch_get_global_queue (QOS_CLASS_BACKGROUND, 0)
    }
}

Он появляется на той же странице, что и пример, опубликованный в вопросе.

person Gavin    schedule 09.02.2016
comment
о боже, как неловко... для меня явно уже слишком поздно :/. Большое спасибо за то, что указали мне на то, что должно было быть очевидным. - person sbstnbelle; 10.02.2016
comment
@sbstnbelle Это случается со всеми нами. Практически каждому программисту приходилось тратить час (или день, а то и больше!) на то, чтобы понять, как исправить проблему, которая оказалась тривиальной. - person Gavin; 10.02.2016
comment
@ Уверяю вас, мы все прошли через эту долину слез хотя бы раз в своей карьере. однако этот был одним из лишних и смущающих ;). так что, спасибо вам еще больше за вашу терпеливую и любезную помощь. Я очень ценю это! - person sbstnbelle; 10.02.2016