Swift替代performSelectorOnMainThread

Ami*_*ole 17 performselector swift ios8

我想在此方法中的块中重新加载我的表数据:

import UIKit
import AssetsLibrary

class AlbumsTableViewController: UITableViewController {

    var albums:ALAssetsGroup[] = []

    func loadAlbums(){
        let library = IAAssetsLibraryDefaultInstance

        library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll),
            usingBlock: {(group, stop) in
                if group {
                    self.albums.append(group)
                }
                else {
                    dispatch_async(dispatch_get_main_queue(), {

                        self.tableView.reloadData()

                    })
                }
            }, failureBlock: { (error:NSError!) in println("Problem loading albums: \(error)") })

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        loadAlbums()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        //self.navigationItem.rightBarButtonItem = self.editButtonItem
    }
Run Code Online (Sandbox Code Playgroud)

但是else块不会执行.我得到的错误是:

'performSelectorOnMainThread' is unavailable: 'performSelector' methods are unavailable
Run Code Online (Sandbox Code Playgroud)

那么什么是'performSelectorOnMainThread'swift 的替代品?

更新:

我现在得到一个中止错误.

Ben*_*Ben 40

这个简单的C函数:

dispatch_async(dispatch_get_main_queue(), {

        // DO SOMETHING ON THE MAINTHREAD
        self.tableView.reloadData()
        })
Run Code Online (Sandbox Code Playgroud)

如何启动您的功能:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

        loadAlbums()

})
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad()?


Tom*_*ard 5

斯威夫特 3

DispatchQueue.main.async(execute:
{
    //Code to execute on main thread
})
Run Code Online (Sandbox Code Playgroud)