Tengo un objeto de datos básicos, Account
, representada como una subclase de NSManagedObject
:iOS: conflicto de modelo de datos básicos con Mail Framework?
@interface Account : NSManagedObject
toda Mi aplicación ha estado desarrollando muy bien, sin embargo, cuando agrego el MessageUI.framework
para que pueda obtener un controlador de vista Redactar correo electrónico , todo el infierno se desata. La aplicación enlaza y compila bien y funciona perfectamente. Hasta que, es decir, empiezo a interactuar con mis objetos Account
que anteriormente trabajaban. Entonces, comienza a recibir estos:
*** 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
Esta en particular de las cuales fue causada por:
// we need to insert a new account
Account *newAccount = [NSEntityDescription
insertNewObjectForEntityForName:[Account entityName]
inManagedObjectContext:self.managedObjectContext];
Ahora, supongo que hay una cierta clase en el MessageUI.framework
que causa el conflicto, pero algunas preguntas:
- la aplicación compila y ejecuta muy bien, sin nombre en tiempo de compilación en conflicto
- los otros componentes en el framew ork parece ser prefix-namespaced (es decir:
MFMailComposeViewController
), por lo que la cuenta teórica no debe serMFAccount
? - Ni siquiera estoy haciendo un
#import <MessageUI/MessageUI.h>
o el#import <MessageUI/MFMailComposeViewController.h>
ligeramente más apretado, el último de los cuales inspeccioné y no vi ninguna definición deAccount
, así que no estoy seguro de por qué los posibles conflictos incluso se cargarían. - Solo para estar seguro, volví a generar mis clases de datos básicos y restablecí todas las configuraciones del simulador, todavía no hay dados.
- Al eliminar el marco del proyecto y la configuración de la construcción soluciona el problema de inmediato.
¿Ha intentado cambiar el nombre de su subclase NSManagedObject? – geraldWilliam
@geraldWilliam: Aunque supongo que eso solucionará la situación, preferiría no poner nombre a mis modelos si no fuera necesario. Realmente hice esta pregunta porque quiero saber lo que me estoy perdiendo, ya que toda mi investigación me ha conducido a callejones sin salida, y si esta situación u otra pareciera volver a aparecer, me gustaría poder resolverla. rápido y con intuición. – Josh
Claro que tiene sentido. Es solo que cuando me encontré con una situación similar en la que tenía el nombre de mi subclase de objeto administrado "Mensaje", simplemente le cambié el nombre y el problema fue resuelto. En el futuro, solo estoy nombrando todas las subclases de objetos gestionados con un prefijo para evitar este problema. – geraldWilliam