Xcode 9 Autocomplete non funziona al 100% - Parzialmente funzionante


121

Questa mattina, Xcode 9.0 (9A235) mostra una nuova / strana scatola di completamento automatico che non è affatto quella di una volta. Come ottengo la casella di completamento automatico completo in modo che il completamento automatico abbia l'aspetto di solito?

inserisci qui la descrizione dell'immagine


1
L'eliminazione della cartella DATI DERIVATI ha risolto il problema. Grazie ad un altro post. Grazie a questo post: stackoverflow.com/questions/28429630/…
Ernie

Probabilmente è perché l' indicizzazione non è stata ancora completata.
ozgur

1
Ho provato ogni soluzione proposta e niente ha aiutato con uno dei miei progetti 🙁
Alexander Vasenin

3
11.3 è un disastro per quanto riguarda questo problema. Spesso il solo riavvio di Xcode aiuta: /
Fattie

Risposte:


236

Provare:

  1. Vai a Xcode> Preferenze> Modifica del testo
  2. In Completamento codice: deseleziona "Suggerisci completamenti durante la digitazione"
  3. Esci da Xcode e riavvia Xcode.
  4. Vai a Xcode> Preferenze> Testo Modifica di nuovo
  5. Esci da Xcode e riavvia Xcode.
  6. Ora vai a completamento del codice e controllo 'Suggerisci completamenti durante la digitazione'.
  7. Prova a digitare funzione di libreria o enum e divertiti!

2
soluzione fantastica. così strano. Mi chiedo come hai fatto a replicare questo.
Kunal Gupta

1
Risposta da un milione di dollari. Questo ha anche risolto il
problema del

Ancora richiesto in Xcode 11.2, grazie per questo strano trucco di vita :-)
Rocket Garden,

Questo aa bug in Xcode come sempre nuovi aggiornamenti crea nuovi problemi, la soluzione funzionante per me è: 1- Quite Xcode. 2- attendi qualche secondo. 3- Apri Xcode ma non toccare nulla, nemmeno facendo clic da qualche parte nell'editor. 4- Attendi il termine dell'indicizzazione. Il completamento automatico ora funziona.
Shahriar

1
Ancora necessario in XCode 11.5, Catalina, luglio 2020. Grazie mille!
Reuben Scratton


30

Cose da provare:

1

Esegui questo comando nella directory del progetto se usi cocoapods:

rm -rf ~/Library/Caches/CocoaPods;
rm -rf Pods; rm -rf ~/Library/Developer/Xcode/DerivedData/*;
pod deintegrate; pod setup; pod install;


2

Pulisci i dati memorizzati nella cache

Pulisci il progetto -> Cmd + Maiusc + K

Pulisci la cartella Build -> Cmd + Maiusc + Opzione + K.

Se hai saltato il passaggio uno:
Elimina dati derivati
Xcode Preferences-> Locations->
Simbolo freccia ti porta a DerrivedData-> Elimina cartella


3

Controlla le fonti di compilazione della fase di compilazione.

Ogni file .swifte .mnel progetto dovrebbe essere in questo elenco o non verrà completato automaticamente in quei file.


4

Ottimizza il tuo editor:

Usa fileprivate su ogni proprietà e funzione di classe che puoi per ridurre l'ambito del lavoro dei compilatori per elemento.

Scrivi codice modulare / OOP in modo da avere meno codice da leggere per il compilatore.

Evita di utilizzare l'inferenza del tipo quando il risultato è un calcolo complesso e prova a suddividere i calcoli complessi in let this = smallerOperationistruzioni


Con XCode 9.2 non c'è più un simbolo di freccia nella cartella dei dati derivati. Grazie per il suggerimento fileprivate. L'incubo continua ...
Sal

Vedo ancora il simbolo della freccia. Era in una versione precedente della 9.2 o qualcosa del genere?
Sethmr

28

Versione Xcode 11.0 (11A420a)

Ho provato la soluzione di Lal Krishna per Xcode V11.0. Ha funzionato alcune volte ma in seguito non ho ottenuto alcun risultato.

Ho trovato una soluzione. Devi eliminare due file:

  1. Libreria / Sviluppatore / Xcode / Dati derivati ​​(come descritto prima)
  2. Library / Developer / Xcode / UserData / IDEEditorInteractivityHistory

Quella soluzione ora mi aiuta. Può essere utile per gli altri 😉


3
ha funzionato per me. Voglio solo dire che Visual Studio 2002 (!) Era migliore di Xcode 2009-2019. In tutti questi anni, Xcode è così pieno di bug. Non capisco perché Apple non si preoccupi degli sviluppatori. Xcode realizzato dagli sviluppatori! (Ho dovuto
tirarlo

Per me funziona: esci da Xcode, rimuovi 2 cartelle come hai detto, riavvia Xcode e tutti i problemi sono spariti: D
phuongzzz

20

Ciò può accadere quando il file non è un membro di Target. Apri il file in cui il completamento automatico non funziona e mostra la scheda "Utilità" in alto a destra di Xcode (blu nello screenshot qui sotto). Screenshot dei pulsanti di visualizzazione in alto a destra di Xcode

Screenshot delle opzioni di iscrizione a Xcode Target

Assicurati che il tuo Target (in genere il nome della tua app) sia selezionato. Il completamento automatico dovrebbe funzionare quasi istantaneamente senza riavviare Xcode, pulire o eliminare i dati derivati.

Se è già selezionato, assicurati di deselezionarlo e ricontrollarlo di nuovo. Per me, ha funzionato.


solo aprendo quella pagina e chiudendo ha funzionato. Non ho capito bene. Grazie btw.
Okhan Okbay

Ha funzionato su xcode 10. Il file era effettivamente già membro della destinazione. Ho dovuto deselezionare e poi ricontrollare per essere riconosciuto come tale.
Jim75

questo è successo a me dopo git merge, immagino che un ramo abbia scritto sul mio file di progetto corrente e l'altro non si sia unito correttamente in quello.
Asfand Shabbir

11

Sto usando Xcode 10.2 e ho avuto lo stesso problema.

Questa risposta di Axel mi ha aiutato a risolvere.

Ad ogni modo, descriverò un po 'di più:

  1. Vai a YourProject.xcodeprojfacendo clic con il tasto destro del mouse e apriShow Package Contents
  2. Vai a xcuserdataed elimina il tuoyouruser.xcuserdatad

Se hai anche xcworkspace(se hai già dei pod installati), esegui i passaggi 3 e 4, in caso contrario salta i passaggi 3 e 4:

  1. Vai a YourProject.xcworkspacefacendo clic con il tasto destro del mouse e apriShow Package Contents
  2. Vai a xcuserdataed elimina il tuoyouruser.xcuserdatad

  3. Esci da Xcode

  4. Elimina i dati derivati utilizzando Terminal:

rm -rf ~ / Library / Developer / Xcode / DerivedData

  1. Apri Xcode e controlla se funziona.

inserisci qui la descrizione dell'immagine


11

Ciò può accadere anche se hai denominato in modo ridondante i tuoi file. Per esempio,

Data.swift

Data.swift


1
Nel mio caso questo era il problema, ho lo stesso nome di file in 2 cartelle diverse
Raj

Succede anche a me. Due file ViewController
Shark Deng

1
Nel mio caso avevo un gruppo virtuale chiamato ABC e un file all'interno di quel gruppo chiamato ABC.swift. Rinominare il file ha risolto il problema. Grazie
Rem-D


5

Prova a farlo:

Seleziona il file >> controlla se il file è stato aggiunto alle destinazioni UITesting o UnitTesting (File inspector -> Target Membership) . In tal caso, deseleziona questi due e assicurati che sia selezionato solo l'obiettivo del progetto. Quindi crea e prova se il completamento automatico funziona correttamente.

Questo ha funzionato per me. Spero che aiuti qualcuno.


5

Ecco un po 'di soluzione alternativa ma funziona.

  1. Pulisci il progetto ... Comando + Maiusc + K

  2. Pulisci la cartella build ... Comando + Maiusc + Opzioni (Alt) + K.

  3. Elimina i dati derivati ​​per il progetto ... Questo può essere fatto con l'aiuto di questo collegamento:

    Come posso eliminare i dati derivati ​​in Xcode 9?

  4. Chiudi XCode.

  5. Riapri XCode (lascia che l'indicizzazione sia completa) e Compila il progetto ... Comando + B

Una volta terminata la costruzione, i suggerimenti torneranno. L'ho provato due volte.

Aggiornare:

A volte il problema può essere semplice come nomi di file duplicati. Controlla attentamente se i nuovi nomi di file aggiunti da te sono in conflitto con i file più vecchi.

In Xcode 11.4, anche se sposti un file esistente in un altro gruppo, i suggerimenti scompaiono. Questo può essere risolto semplicemente riavviando Xcode.


4

Dopo un lungo periodo di ricerca, ho finalmente risolto il problema per me. In Xcode> Preferenze> Modifica del testo, in "Completamento del codice", avevo selezionato "Usa il tasto Esc per mostrare i suggerimenti di completamento" per qualche motivo. Non appena ho deselezionato questa casella, il completamento automatico ha funzionato a meraviglia, senza nemmeno dover riavviare Xcode! (Xcode 10)


3

Ho aggiunto qui cosa stava succedendo nel mio progetto nel caso in cui potesse aiutare qualcun altro ... Avevo 2 file con lo stesso nome e non me ne rendevo conto.


2

Ho appena perso un giorno cercando di risolvere l'incubo del completamento automatico di Xcode (9.2). L'eliminazione dei dati derivati ​​sembrava funzionare brevemente, poi le cose sono tornate. I riavvii ecc. E altri voodoo suggeriti non sono riusciti a fare la differenza.

Ho rinunciato e ho scaricato la versione di prova di 30 giorni di AppCode da Jet Brains. Il completamento automatico ha funzionato bene lì e questa forse è una coincidenza, ma poi ha ripreso a funzionare nel mio progetto in Xcode. Non posso garantire che continuerà a funzionare ...


"altro voodoo suggerito" lol - così ben messo ... perdiamo così tanto tempo a cercare soluzioni per i bug di Apple, ma ho smesso di lamentarmi di xcode quando ho iniziato a utilizzare Android Studio
JohnV

2

Sembra essere un file specifico nel mio caso (Xcode 9.2) Per me la soluzione era:

  1. Elimina file problematico (rimuovi riferimento)
  2. Pulisci e costruisci
  3. Aggiungi nuovamente il file al progetto (non ho controllato gli obiettivi di test)
  4. Costruisci di nuovo

Infine, dopo 3 ore di tentativi di tutto, il completamento automatico funziona come dovrebbe.


2

Problemi principalmente perché mancano la posizione di alcuni file nel navigatore di progetto (errori di compilazione)

  1. Premi il comando + 1 per aprire il Project Navigatorriquadro
  2. Controlla se ci sono file mancanti

O puoi:

  1. Elimina dati derivati ​​(comando + MAIUSC + K)
  2. Pulisci cartella build (comando + maiusc + opzione + K)
  3. Premi di nuovo build (comando + B)
  4. Dovresti vedere un errore di build che Xcode non è riuscito a trovare alcuni file che impediscono allo strumento di build di elaborare il completamento automatico.
  5. Correggi e correggi i file mancanti che vedi.

Spero che questo ti aiuti



2

Per Xcode 11.4 (11E146)

Barra rovesciata nel nome della cartella che interrompe la funzione di completamento automatico. In tal caso, rimuoverla e ricostruirla.

inserisci qui la descrizione dell'immagine


1

Per me stava accadendo nel mio file di prova, perché per qualche motivo non faceva parte di un obiettivo. L'impostazione dell'appartenenza target ha risolto il problema.


1

Per me, il problema si è verificato quando ho scartato tutte le modifiche di un file (in Controllo codice> Salva), che ha effettivamente eliminato il file. Questo è quello che volevo e ho pensato che anche il file e tutti i riferimenti ad esso sarebbero stati eliminati.

Tuttavia, c'era ancora un riferimento al file (mostrato in rosso) nel navigatore del progetto. L'eliminazione del file (ora inesistente) nel navigatore del progetto ha riportato magicamente il completamento automatico.

Nessuna quantità di pulizia, eliminazione dei dati derivati, ecc. Ha aiutato. Mi sono reso conto che il file cancellato era ancora visualizzato quando ho provato a costruire il mio progetto, che ovviamente non è riuscito perché non riusciva a trovare quel file.

Spero che questo aiuti qualcuno a risparmiare 30 minuti :)


Vedi la mia risposta per il motivo.
James Bush

@ponury, non capisco ... OP il secondo paragrafo è una soluzione, no?
brasofilo

1

Usa Command + B
o Command + R per costruire o eseguire il progetto
Xcode a volte incasina;)


1
  1. controlla se hai selezionato Suggest completions while typingin Xcode -> Preferenze -> Modifica testo
  2. vai a utente-> Libreria-> Sviluppatore-> Xcode-> DerivedData nel Finder ed elimina la cartella DerivedData

1

Il mio caso potrebbe sembrare troppo specifico per aiutare, ma potrebbe dare a qualcuno un'idea di come risolvere l'auto-completamento non funzionante. Xcode 10.2.1.

Nel mio caso, il completamento automatico ha smesso di funzionare completamente e nessuna di queste altre risposte mi ha aiutato. Inoltre, si poteva sentire la ventola sul computer aumentare il volume indicando che qualcosa stava lavorando troppo (nessun'altra app in esecuzione), va notato che stavo modificando su un laptop MacBook Pro. Sembrava essere collegato all'editor che lottava per analizzare l'equazione che avevo scritto:

switch mtype {
    case .indeterminate:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
    case .right:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2) + (frame.width / 2)
    case .left:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2)
 }

Stavo cercando di animare una visualizzazione di testo a sinistra, a destra o al centro a seconda delle preferenze dell'utente. Il newPositionè una CGPointche il testo animerà a. Ad ogni modo, ho diviso le equazioni e all'improvviso il completamento automatico ha iniziato a funzionare e la ventola si è interrotta! Sono stato in grado di ricreare questo problema specifico più di una volta digitando nuovamente il codice sopra e quindi sostituendolo con:

let halfFrameWidth: CGFloat = frame.width / 2
let middleLeft = (halfFrameWidth - mainFigureText.frame.width) / 2

switch doseType {
    case .right:
      newPosition.x = middleLeft + halfFrameWidth
    case .left:
      newPosition.x = middleLeft
    default:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
 }

1

Vorrei aggiungerne un'altra al mucchio di soluzioni, perché è l'unica che ha funzionato per me e non si trova da nessuna parte qui.

Xcode normalmente viene fornito con due configurazioni di build predefinite per ogni progetto. Release& Debug. Ne ho uno in più per i miei test unitari chiamato Testing. In Xcode 10.1, 10.2, 10.3 e 11 beta, il nuovo sistema di build non sembra apprezzarlo e si completerà automaticamente solo se usi Releaseo Debug. Qualsiasi configurazione di build personalizzata interrompe il completamento automatico in un progetto misto (swift + objc) con unit test.


0

Questo collegamento mi ha aiutato. Apri le Impostazioni di compilazione e compila i percorsi di ricerca del framework. Vedi l'immagine sotto.

inserisci qui la descrizione dell'immagine


0

Gli errori di compilazione possono interrompere la funzionalità di completamento automatico in Xcode.


0

Ho avuto il problema con il completamento automatico al 100% non funzionante, nessuna delle scritte qui ha aiutato. Una cosa che ho notato: è stata interrotta subito dopo aver aggiunto alcune entità nel file .xcdatamodel, che hanno la definizione della classe codegen per impostazione predefinita.

Quindi non sono rimasto sorpreso quando ho utilizzato il codegen vecchio stile none (e la generazione di classi ovviamente) ha risolto il problema immediatamente, anche senza riavviare xcode.

inserisci qui la descrizione dell'immagine


0

Con Xcode 11.1, la semplice esecuzione Clean Build Foldero eliminazione dei dati derivati ​​non era sufficiente per correggere il completamento automatico.

Solo dopo aver riavviato il mio Mac , tutto è tornato alla normalità


0

Se hai problemi con il completamento strano / completamento automatico / intellisense (che non mostra elementi predefiniti come delegati e metodi di protocolli di origine dati) cambia semplicemente il tuo obiettivo (ad esempio dal simulatore iPhone 8 al dispositivo reale), crea il progetto e torna al tuo obiettivo originale .

Simile con i problemi con Interface Builder (storyboard) che non mostrava nulla, ma solo "niente selezionato" ogni volta che selezioni una parte qualsiasi della vista. Passa ad un altro Xib / Storyboard (o creane uno nuovo), controlla se funziona e torna indietro.

Queste soluzioni alternative hanno funzionato per me in entrambi i casi (ho riscontrato entrambi i problemi in un giorno con un progetto su Xcode 10.2.1). Da quello che ho visto in tutti i forum di Internet sembra che questi siano bug mai corretti da Xcode 6.x o giù di lì.

Saluti!


0

Nel mio caso (Xcode 11.1), è successo quando ho interrotto l' autoindicizzazione di Xcode con questo comando defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

Quindi lo restituisco con defaults write com.apple.dt.Xcode IDEIndexDisable -bool false. quindi riavvia macOS ed esegui di nuovo Xcode.


0

Ha avuto lo stesso problema con Xcode 11.3. Niente di cui sopra non ha aiutato, si è scoperto che avevo errori di build. Basta correggere gli errori di compilazione e il completamento automatico funzionerà di nuovo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.