2011-12-02 4 views
10

ho creato un UserModel.xcdatamodeld con una sola voce: UserBase, e ho aggiunto un attributo il cui nome è UserID e il tipo è Integer 32.XCode 4.2 NSManagedObject contesto generazione non riuscita

Dopo di che, ho creare classi per esso con il file -> nuovo file-> sottoclasse NSManagedObject, che crea automaticamente UserBase.h e .m.

Nel mio controller importato il file UserBase.h, e creare una proprietà:

NSManagedObjectContext *userBaseObjectContext; 

con

@property (nonatomic, retain) NSManagedObjectContext *userBaseObjectContext; 

Nel file di mycontroller.m sintetizzata la proprietà userBaseObjectContext e nella funzione DidLoad Ho provato questo :

Quando provo a creare il mio progetto, ho ottenuto questo e rror:

Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_NSEntityDescription", referenced from: 
    objc-class-ref in LoginController.o 
"_OBJC_METACLASS_$_NSManagedObject", referenced from: 
    _OBJC_METACLASS_$_UserBase in UserBase.o 
"_OBJC_CLASS_$_NSManagedObject", referenced from: 
    _OBJC_CLASS_$_UserBase in UserBase.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Che cosa significa?

Ho seguito questo tutorial: http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/

+3

Prova ad aggiungere il CoreData.framework. – rjstelling

+0

Funziona. Grazie ... – mudlee

risposta

20

simboli non definiti di solito significa che qualche quadro manca. I framework sono librerie di classi precompilate che puoi utilizzare sulla tua app.

Per aggiungere un quadro sulla XCode 4:

  1. Cliccare sulla radice del progetto (l'elemento in alto a sinistra con l'icona Blueprint).
  2. Fare clic sul target (solitamente lo stesso nome dell'app con l'icona "A fatta di matite" a sinistra).
  3. Fare clic sulla scheda "Riepilogo" nella parte superiore, quindi scorrere verso il basso ... comprimere i divisori e sotto "Informazioni sulla distribuzione di iPad" si trova la sezione "Strutture e librerie collegate" (vedere la figura 1 di seguito).
  4. Fare clic sul pulsante "+" nella parte inferiore dell'elenco.
  5. Un popup ti chiederà di scegliere un Framework, cercarlo e quando lo avrai selezionato, fai clic su Aggiungi.

E questo è tutto! Le classi contenute in tale Framework saranno disponibili sul tuo codice finché eseguirai la #import corretta.

Figura 1:

enter image description here

Per mantenere il vostro progetto ordinato, io suggerisco di trascinare il quadro appena aggiunto al gruppo "quadri".

+3

Inoltre ... aggiungi '#import ' nel tuo file "pch" – refaelos

3

Se hai importato il file di avviso nel tuo progetto, assicurati che la casella di spunta spuntata sull'abbonamento di destinazione! Ho avuto lo stesso problema e dopo aver spuntato la casella e l'errore è scomparso!

0

Provare a eliminare la classe NSManagedObject dal progetto e generare di nuovo. Mi ha aiutato;)