此问题与我在此处发布的问题有关:Iphone Core Data crashing on Save 但是错误是不同的,所以我提出了一个新问题。现在,在尝试将新对象插入到managedObjectContext中时出现此错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '"MailMessage" is not a subclass of NSManagedObject.'
但显然是:
@interface MailMessage : NSManagedObject { ....
当我运行此代码时:
NSManagedObjectModel *managedObjectModel = [[self.managedObjectContext
persistentStoreCoordinator] managedObjectModel];
NSEntityDescription *entity =[[managedObjectModel entitiesByName]
objectForKey:@"MailMessage"];
NSManagedObject *newObject = [[NSManagedObject alloc] initWithEntity:entity
insertIntoManagedObjectContext:self.managedObjectContext];
当我没有提供MFMailComposeViewController时它运行正常,但如果我在
中运行此代码- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
方法,它在创建newObject变量时抛出上述错误。 使用print对象时的实体对象产生以下内容:
(<NSEntityDescription: 0x1202e0>) name MailMessage, managedObjectClassName MailMessage,
renamingIdentifier MailMessage, isAbstract 0, superentity name (null), properties {
在这两种情况下,所以我认为managedObjectContext完全无效。我不知道为什么说MailMessage在那时不是NSManagedObject的子类,而不是另一个。
任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:10)
类MailMessage可以在库中或框架中的其他位置实现。由于Objective C没有实现名称空间,因此将使用其中一个名称空间。哪一个未定义。尝试为您的班级提供不同的名称,以便快速解决问题。
答案 1 :(得分:4)
从调试器中查找这样的消息。它将证实本杰明说的是什么。
类MailMesssage在/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/System/Library/PrivateFrameworks/Message.framework/Message
和/Users/home/Library/Application Support/iPhone Simulator/4.2/Applications/FFFFFFFF-FFFF-0000-0000-AAAAAAAAAAA/Projects.app/Projects
中实现。将使用两者之一。哪一个未定义。
答案 2 :(得分:0)
尝试重置模拟器或从设备中卸载应用程序。 NSInternalInconsistencyException
通常与更改数据模型和数据库没有相应更新的问题有关。
答案 3 :(得分:0)
我能够通过在呈现模态视图控制器之前创建MailMessage对象来解决此问题。一旦创建了MailMessage对象,保存更改就不会出现问题。据我所知,一个奇怪的解决方法并没有解决实际问题,但它确实有效。