Using threads to update UI with Swift

There is GCD. Here is a basic usage:

for page in listOfPages {
    var label = NSTextField()
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
        let result = getInformationFromPage(page)
        dispatch_async(dispatch_get_main_queue()) {
            label.stringValue = result
        }
    }
}

dispatch_async function asynchronously runs the block of code on the given queue. In first dispatch_async call we dispatch the code to run on background queue. After we get result we update label on main queue with that result


Swift 3.0 + version

DispatchQueue.main.async() {
    // your UI update code
}

Posted this because XCode cannot suggest the correct syntax from swift 2.0 version