2017-06-01 6 views
3

ich diese Linie verwendet in Objective-CiOS Swift 3 perform onMainThread

[self performSelectorOnMainThread: @selector(importComplete) 
withObject: nil waitUntilDone: YES]; 

Ich habe versucht, die obige Zeile, um eine beliebige Anzahl von Varianten zu konvertieren, aber haben nichts gefunden, das kompiliert wird. Mein aktueller Versuch ist wie folgt:

Ich konnte meine Änderung nicht kompilieren. Die obige Änderung stellt die Nachricht

„Verwendung von ungelöster Kennung performSelector.

ich alles gelesen habe ich auf dieser Methode finden kann, und es erscheint ein Chaos in Swift 3 sowieso zu sein, aber ich lerne gerade die Sprache, und ich habe viel Zeit verschwendet, was eine einfache Syntax sein sollte.

jemand einen Vorschlag hier machen?

TIA

+1

In welcher Klasse rufen Sie performSelector auf? –

+1

Haben Sie die Methode 'importComplete' implementiert? – ridvankucuk

+0

Ich habe ImportComplete implementiert. Bitte beachten Sie den Kommentar zur Antwort unten. – RegularExpression

Antwort

1

ist nicht in withObject auszuführen ist es in with

versuchen, diese

performSelector(onMainThread: #selector(importComplete), with: nil, waitUntilDone: false) 

und nannte das Verfahren als

func importComplete() { 
    // 
    print("Hello World") 
} 

Ausgang enter image description here

+0

Es gibt mehrere Antworten, die hätten funktioniert. Am Ende habe ich einen Fehler oben in der Quelldatei gefunden, der zum Kompilierungsproblem beigetragen hat, und ich habe eine saubere Kompilierung mit deinem Vorschlag und dem Fixieren des obigen Gegenstandes bekommen.Danke an alle Befragten. – RegularExpression

+0

@RegularExpression - willkommen und glücklich, dies zu hören –

1

Eine der Optionen sein kann:

let selector = NSSelectorFromString("importComplete") 
perform(selector, on: Thread.main, with: nil, waitUntilDone: true) 

oder

let selector = NSSelectorFromString("importComplete") 
perform(selector, on: Thread.main, with: nil, waitUntilDone: true, modes: nil) 

Abhängig von Ihren Bedürfnissen.

1

können Sie diesen Code verwenden, um eine Operation auf main Gewinde

performSelector(onMainThread: #selector(performOperation), with: nil, waitUntilDone: true) 

Ihre Wähler Methode

func performOperation() { 

    } 
0

Wenn Sie Ihre Funktion wie erklären

func importComplete() { 


} 

dann können Sie das tun,

self.performSelector(onMainThread: #selector(ViewController.importComplete), with: nil, waitUntilDone: true) 

wo ViewController ist Ihre aktuelle Klasse!