2014-09-13 27 views
5

recentemente ho scaricato iOS 8 per assicurarsi che la mia applicazione esistente funzioni correttamente con esso, ma sto ottenendo un avvertimento nel debugger all'avvio:dati fondamentali: Impossibile caricare classe denominata "CDAccount"

"CoreData: warning: Unable to load class named 'CDAccount' for entity 'CDAccount'. 
Class not found, using default NSManagedObject instead." 

Dopo alcune ricerche, sembra che le persone abbiano avuto problemi simili durante l'uso di Core Data in Swift, ma tutto il mio codice è in Objective-C (e il modello di dati non è cambiato da almeno 6 mesi).

Qualsiasi consiglio è molto apprezzato, sono davvero nervoso che la mia app non funzionerà correttamente una volta che le persone inizieranno l'aggiornamento a iOS 8!

+0

sicuro di questo, ma sono sicuro che la classe è un membro del target che si sta costruendo per? – fzaziz

+0

Stai utilizzando i framework Social o Account nella tua applicazione? Il framework Accounts utilizza internamente i Core Data e, se la memoria serve CDAccount, è l'entità Core Data che esegue il backup dell'oggetto ACAccount nell'interfaccia pubblica. – quellish

+0

Oh davvero? Puoi collegarmi alla documentazione? Non ero in grado di trovarlo. – Mason

risposta

16

Ho avuto lo stesso identico problema in Objective-C e Xcode 6. Per qualche ragione, Xcode aveva rimosso le mie classi 'CustomNSManagedObject'.m dalle mie origini di compilazione.

Vai al target del progetto -> Crea Fasi -> compilare i sorgenti e utilizzare il pulsante + per aggiungere CDAccount.m

Se si utilizza Mogenerator per creare un file _CDAccount.m, aggiungere che, per le vostre fonti di compilazione anche.

+8

Il mio oggetto era già in sorgenti compilate e sto ancora ricevendo l'errore in Xcode 6 – PostCodeism

+0

@PostCodeism, vedere la risposta correlata pubblicata da Lucien. Ha fatto il trucco per me: http://stackoverflow.com/questions/25076276/unabled-to-find-specific-subclass-of-nsmanagedobject –

+0

Questo ha risolto il mio problema. Ma, invece di usare Fasi di creazione per aggiungere il codice sorgente, ho appena fatto clic sul file .m che era già elencato come file nel progetto e quindi controllato l'appartenenza di destinazione nel pannello Utilità> Impostazioni File. Perché XCode ha rimosso il file .m è totalmente strano. Forse non è mai stato aggiunto dall'inizio. Non c'è molto nel file .m tranne alcune dichiarazioni @dynamic. – Brainware

2

Sembra un bug/problema Xcode. Sto usando Xcode 6.3.1

  • clic sul tuo entità di dati di base (xxx.xcdatamodeld), quindi selezionare l'entità, e nel attributi ispettore vedrete che il nome della classe dell'entità è impostato su: PRODUCT_MODULE_NAME.xxx, dove 'xxx' è il nome della tua entità.

soluzione: devi sostituire PRODUCT_MODULE_NAME con il nome della tua app.

caso di dubbio circa il nome della tua app, controllare sotto 'costruire impostazioni', filtro su 'product_module_name', e troverete il vostro nome dell'app in 'confezione'

  • in alcuni casi (il mio caso) anche il file del modello di dati (swift o objective-c) viene rimosso da Xcode dal progetto, ma è ancora attivo su disco, ma è necessario aggiungerlo di nuovo. Quindi in questo caso prendere il file 'CDAccount.m' & cadere nel progetto di nuovo (o usare un altro dei diversi modi per fare questo)
7

Rimuovere il "punto" in configurazioni "Default" su. xcdatamodeld:

enter image description here

a:
enter image description here
enter image description here
Ricostruisci l'applicazione.

+1

Grazie per questo. Ho provato tutte le altre correzioni (che sono facilmente reperibili in molte domande diverse ma simili su SO. Questo ha risolto il problema dopo ore di mal di testa. – Amos

+1

Per me l'aggiunta del punto è stata utile. – Gamec

0

Il mio problema era simile, ma le soluzioni elencate non funzionavano perché le mie Classi CD erano archiviate in un framework. La soluzione era di cambiare la rappresentazione del nome di classe in "frameworkName.className". Tuttavia, xcdatamodeld non mi ha permesso di cambiarlo, quindi ho dovuto "Mostra contenuti" sul file, aprire il file "content" in XCode e apportare le modifiche da solo.

2

Anche il mio problema era simile, ma il motivo era che il modulo di entità non era impostato.

module selection in Entity properties menu

Non
Problemi correlati