Ho un oggetto Core Data, Account
, rappresentato come una sottoclasse di NSManagedObject
:iOS - Conflitto di modello di dati di base con Mail Framework?
@interface Account : NSManagedObject
Tutta la mia applicazione ha sviluppato bene, tuttavia, quando aggiungo il MessageUI.framework
modo da poter ottenere un controller della vista e-mail comporre , si scatena l'inferno. L'app collega e compila bene, e funziona bene. Finché, cioè, inizio ad interfacciarmi con gli oggetti Account
che funzionano in precedenza. Poi, ho iniziare a ricevere questi:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '"Account" is not a subclass of NSManagedObject.'
*** First throw call stack:
(0x202b012 ... 0x2385)
libc++abi.dylib: terminate called throwing an exception
Questo particolare uno dei quali è stata causata da:
// we need to insert a new account
Account *newAccount = [NSEntityDescription
insertNewObjectForEntityForName:[Account entityName]
inManagedObjectContext:self.managedObjectContext];
Ora, sto cercando di indovinare che c'è qualche classe nella MessageUI.framework
causa il conflitto, ma io hanno un paio di domande:
- l'applicazione compila e funziona bene, nessun nome in fase di compilazione in conflitto
- Gli altri componenti del framew ork sembra essere un prefisso-namespace (es .:
MFMailComposeViewController
), quindi l'account teorico non dovrebbe essereMFAccount
? - Non sto nemmeno facendo uno
#import <MessageUI/MessageUI.h>
o leggermente più stretto#import <MessageUI/MFMailComposeViewController.h>
, l'ultimo dei quali ho ispezionato e non ho visto nessuna definizione diAccount
, quindi non sono sicuro del motivo per cui potrebbero essere caricati anche i conflitti possibili. - Giusto per essere sicuro, ho rigenerato le mie classi Core Data e ripristinato tutte le impostazioni del simulatore, ancora senza dadi.
- La rimozione del framework dal progetto e le impostazioni di costruzione risolvono immediatamente il problema.
Hai provato a rinominare la sottoclasse NSManagedObject? – geraldWilliam
@geraldWilliam: Mentre presumo che ciò risolva la situazione, preferirei non assegnare un nome ai miei modelli se non necessario. Ho davvero fatto questa domanda perché voglio sapere cosa mi manca, poiché tutte le mie indagini hanno portato a vicoli ciechi, e se questa situazione o un'altra simile si presentasse di nuovo, mi piacerebbe essere in grado di risolverlo rapidamente e con intuito. – Josh
Certo che ha senso. È solo che quando mi sono imbattuto in una situazione simile in cui avevo il nome della mia sottoclasse di oggetti gestiti "Messaggio", l'ho semplicemente rinominato e il problema è stato risolto. Andando avanti, sto solo nominando tutte le sottoclassi degli oggetti gestiti con un prefisso per evitare questo problema. – geraldWilliam