Come eliminare una versione del modello dati precedente / non utilizzata in Xcode


163

Come posso eliminare un vecchio modello di dati in Xcode? L'opzione è disabilitata nel menu. (I modelli che desidero eliminare non sono stati resi pubblici, sono modelli di sviluppo provvisori.)


Vuoi dire che l'opzione "Elimina" nel menu "Modifica" è disabilitata (mentre il tuo vecchio file Modello dati è selezionato nella finestra di ispezione File)? O vuoi dire qualcos'altro del tutto?
Michael Dautermann,

Sì, la scelta di eliminazione nel menu Modifica e anche nel menu di controllo con il pulsante destro del mouse (e qualsiasi menu che riesco a trovare) è disabilitata. So che alcune persone passeranno a un precedente xcode per eliminare le versioni vecchie / non utilizzate, ma non ne ho installato uno.
SAHM,

Michael, sei in grado di farlo in xCode 4?
SAHM,

sì ... Non ho mai visto l'opzione di menu "elimina" disabilitata per nessuno dei miei progetti XCode 4.
Michael Dautermann,

Sepcifically per il xcdatamodel? Altri hanno avuto lo stesso problema con l'eliminazione di xcdatamodels XCode 4 .. Non ho visto una soluzione pubblicata.
SAHM,

Risposte:


374

È un trucco, ma ha funzionato per me:

  1. Impostare la versione corrente del modello in Xcode su quella che si desidera conservare
  2. Rimuovi .xcdatamodeld dal tuo progetto (tasto destro del mouse -> Elimina -> Rimuovi solo riferimento )
  3. Mostra il contenuto del pacchetto .xcdatamodeld nel Finder (tasto destro del mouse -> Mostra contenuto pacchetto)
  4. Elimina i file .xcdatamodel che non desideri più
  5. Aggiungi nuovamente il file .xcdatamodeld al tuo progetto

Ciò elimina la necessità di modificare manualmente uno qualsiasi dei file di metadati del progetto.


2
Ho provato questa tecnica e ho scoperto che a causa del modo in cui le mie versioni del modello sono state nominate, la versione del modello è stata riordinata in modo errato e la versione predefinita errata è stata selezionata mentre ho aggiunto nuovamente il file xcdatamodel nel progetto. Ciò può essere dovuto al fatto che ho un massimo di 38 versioni di modello e non ho cambiato il nome della versione predefinita, quindi le versioni sono denominate "MY_APP 37.xcdatamodel". Volevo eliminare 38. All'importazione, è stato estratto in ordine lessicale, il che significa che "MY_APP 10.xcdatamodel" è stato il primo, e selezionato come predefinito. Non è l'ideale nel mio caso.
Mike,

1
Mike - lo stesso problema per me, anche se sono stato in grado di riordinare il project.pbxproj in un editor di testo senza alcun dramma grave. Non è ancora l'ideale.
Ian Kershaw,

1
Questo non funziona con Xcode 5.1.1. In precedenza, con molte piccole modifiche al modello e numeri di versione del modello incrementati, la migrazione automatica leggera funzionava correttamente. Tuttavia, dopo aver provato a rimuovere tutti i modelli "solo sviluppo" estranei utilizzando questo approccio, viene visualizzato l'errore: "Errore: impossibile trovare o inferire automaticamente il modello di mapping per la migrazione".
Dalmazio,

1
in 6.4 non esiste alcuna opzione per rimuovere i riferimenti. È stato appena cancellato. Il resto dei passaggi sembrava funzionare
noobsmcgoobs,

1
Questo sembra funzionare in Xcode 10.2.1. La mia migrazione ha comportato alcune modifiche al nome dell'attributo, quindi nulla di grave.
Gavin,

35

Ho appena trovato la necessità di farlo. Ho creato una nuova versione del modello, poi ho capito che non mi serviva dopo tutto. Sono stato sorpreso di scoprire che non c'era modo di eliminarlo (che riuscivo a trovare) da Xcode. Tuttavia, per rimuoverlo ho fatto quanto segue:

Innanzitutto mi sono assicurato che non fosse la mia versione del modello attuale. Quindi sono andato a Finder e ho trovato il mio file * .xcdatamodeld. Fare clic con il tasto destro e mostrare i contenuti del pacchetto su questo. Lì troverai il file del modello attuale e puoi eliminarlo.

Questo ancora non lo rimuove da Xcode e apparirà rosso in File e Gruppi. Per evitare che ciò accada, torna al Finder e mostra il contenuto del pacchetto sul tuo file * .xcodeproj principale (potresti voler assicurarti di avere prima un backup di questo). Lì apri e modifica project.pbxproj fai una ricerca sul nome della versione del tuo modello, nel mio caso "intervallo 8". Per me è apparso su due linee separate. Ho rimosso queste righe e ora è stato completamente rimosso da Xcode.


1
@ Daniel_Wood, sì, avevo scoperto anche come fare manualmente, ma attenzione. Può causare alcuni problemi lungo la linea ... Ho dovuto rifarlo più volte, finisce anche per cambiare le versioni attiva e non attiva a volte, quindi quando si reimposta la versione corretta, non lo sposta in la cima dell'elenco (a volte) che causa più problemi! Grazie mille per l'input però. Sembra strano che avrebbero rimosso questa capacità - non dovremmo mai AVERE andare nel file .xcodeproj!
SAHM,

2

Questo ha funzionato per me in XCode 10.3 senza che si verificasse il problema di ordinazione quando si rimuove l'intero modello e si aggiunge di nuovo:

  1. Seleziona una versione del modello diversa da quella che desideri eliminare.
  2. Da XCode, fai clic con il pulsante destro del mouse sul file .xcdatamodeld e seleziona "Mostra nel Finder".
  3. Chiudi XCode.
  4. Nel Finder, fai clic con il pulsante destro del mouse sullo stesso file e seleziona "Mostra contenuto pacchetto".
  5. Annota il nome del modello che desideri rimuovere, quindi dal Finder, eliminalo.
  6. Sempre in Finder, vai al file di progetto (.xcodeproj).
  7. Fare clic con il tasto destro e aprire con Atom o qualsiasi altro editor.
  8. Dal riquadro "Progetto" aprire il file project.pbxproj.
  9. Rimuovere tutte le righe contenenti il ​​nome del modello rimosso (Esempio: "ABC 17.xcdatamodel"). Troverai due righe simili alle seguenti:

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = " ABC 17.xcdatamodel "; sourceTree = ""; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /,

    Nota se trovi una terza riga sarà qualcosa del tipo:

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    Ciò significa che è il modello attualmente selezionato. Non eliminare mai questa riga. Basta cambiare il testo in un'altra versione del modello.

  10. Riapri XCode.


-4

La mia risposta non è affatto specifica del problema, ma è veloce e funziona. Per quelli che usano git. Puoi semplicemente scartare le modifiche non messe in scena.

git stash save --keep-index

Quindi puoi rilasciare quella scorta con un git stash dropcomando se vuoi.

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.