Cambiare "mamma" in "mamma" ha funzionato per me. La risposta di Marcus S. Zarra ha lavorato anche per me una volta ho fissato la sintassi per:
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
anche se non ho idea di che cosa fa quella linea.
Edit: ho fatto un po 'di ricerca e ora so quello che la linea di cui sopra fa e perché funziona/non funziona. la linea sopra cercherà il tuo progetto per tutti i modelli e li aggiungerà a xcdatamodel. Funziona se non si utilizzano modelli con versione. Tuttavia, se si decide di utilizzare gli modelli con versione in futuro questo importerà tutte le versioni del modello in modo da ottenere sia il vecchio e il nuovo insieme che non è ciò che si desidera. Quindi la soluzione è fare una delle due cose. Se si desidera utilizzare un modello non di versione utilizzare le seguenti linee per afferrare il modello:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"mom"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Se si desidera utilizzare un modello di versione (consigliata) selezionare il modello ed eseguire Design -> Modello di dati -> Aggiungi Modello Versione dalla barra dei menu per creare un modello con versione. Questo cambierà automaticamente l'estensione del modello da xcdatamodel a xcdatamodeld. Una volta fatto questo utilizzare le seguenti linee:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Si noti che l'unica differenza è il parametro cambia OfType da @ "mamma" a @ "momd". Spero che questo chiarisce ciò che sta succedendo per tutti coloro che sta cercando di capire CoreData.D
fonte
2011-04-19 17:34:31
sei sicuro il vostro modello è di tipo momd e non mamma? (Con versione vs. modello unversioned) –