2014-09-22 11 views
42

Dopo l'aggiornamento alla versione più recente di Cordova (3.6.3) viene visualizzato questo errore quando si esegue il comando cordova build ios.Errore di compilazione iOS: non visibile @interface per 'CDVCommandDelegateImpl' dichiara il selettore 'execute:'

L'errore:

/Volumes/local.uhmuhm.net/projectxxx/htdocs/phonegap/src/Projectxxx/platforms/ios/Projectxxx/Classes/MainViewController.m:154:19: error: no visible @interface for 'CDVCommandDelegateImpl' declares the selector 'execute:' return [super execute:command]; 

Altre info:

  • piattaforme installate: Android 3.6.3, ios 3.6.3

  • Sono sull'ultima versione xcode (6.0.1)

  • Tutto è cominciato dopo l'aggiornamento a 3.6.3 Cordova (stavo correndo 3.4.1 prima)

Qualche idea su come risolvere questo problema?

enter image description here

+0

Downagraded to Cordova 3.5 e tutto funziona di nuovo. –

risposta

44

Basandosi su ciò che ha detto Nazar, l'unica differenza di rilievo durante la creazione di una nuova applicazione e confrontando una cartella esistente platforms/ios/Classes stava rimuovendo il metodo execute da MainViewController.m.

file diff

Questo chiarisce l'errore di compilazione per me.

+1

Grazie! Non avevo davvero lo stomaco per rimuovere/ricreare la mia piattaforma ios! –

+1

Fare i passaggi di rimozione/aggiunta di cui sopra ha rimosso alcune cose che avevo impegnato in Git, quindi percorrere questa strada è stata una scelta migliore per me per risolvere questo problema. Grazie per aver postato questo. – jkwuc89

+0

Questo ha funzionato anche per me, anche se non mi piace dover modificare questi file che non fanno direttamente parte del mio progetto. Qualcuno ha qualche soluzione per includere questi file modificati nel controllo della versione, consentendo anche che Cordova faccia il suo esempio? – DenisH

3

Ho avuto lo stesso problema di oggi. Ho rintracciato il file/Corsi/CDVCommandDelegateImpl.m CordovaLib non ha questo:

- (BOOL)execute:(CDVInvokedUrlCommand*)command 
{ 
    return [_commandQueue execute:command]; 
} 

come è stato nel stesso file nell'ultima Cordova 3.5.0. Così ho aggiunto questo frammento e anche la dichiarazione corretta nel file di CDVCommandDelegateImpl.h:

- (BOOL)execute:(CDVInvokedUrlCommand*)command; 

E ora la mia applicazione è in esecuzione! Non sono sicuro se questa è buona soluzione, ma se funziona, allora è abbastanza buono :)

13

Run cordova create con la nuova versione Cordova per creare nuovo progetto quindi copiare AppDelegate e MainViewController su file nel progetto "vecchio". Dopo che l'errore è andato.

+0

grazie! hai salvato la mia giornata – BrendanMullins

29

Ho risolto lo stesso problema con

cordova platform remove ios 
cordova platform add ios 
+0

Grande! Fare un tentativo. –

+5

Questo cancellerà qualsiasi file sorgente che hai in quella directory, solo così sai – user2217751

+1

Dovresti mettere tutto il codice sorgente in www e unire le cartelle nella directory principale che non saranno rimosse. –

Problemi correlati