Jos*_*osh 8 xcode objective-c messageui nsmanagedobject ios
我有一个Core Data对象Account,表示为以下的子类NSManagedObject:
@interface Account : NSManagedObject
我的整个应用程序一直在发展很好,但是,当我添加MessageUI.framework所以我可以得到一个撰写电子邮件视图控制器,所有地狱都松了一口气.该应用程序链接和编译很好,运行得很好.直到,也就是说,我开始与之前工作的Account对象进行交互.然后,我开始得到这些:
*** 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
其中一个特殊原因是:
// we need to insert a new account
Account *newAccount = [NSEntityDescription
                            insertNewObjectForEntityForName:[Account entityName] 
                            inManagedObjectContext:self.managedObjectContext];
现在,我猜测MessageUI.framework导致冲突有一些课,但我有几个问题:
MFMailComposeViewController,那么理论帐户应该不是MFAccount吗?#import <MessageUI/MessageUI.h>或稍微紧一些#import <MessageUI/MFMailComposeViewController.h>,后者我检查过并没有看到任何定义Account,所以我不确定为什么甚至会加载可能的冲突.我发生过这种情况,这是确切的框架(该类被称为Broadcaster).在这种情况下,私有Message框架通过链接MessageUI,并且此框架提供了Account实现.
您可以Account通过创建新项目来验证MessageUI框架是否加载了一个类,并在app delegate的application:didFinishLaunchingWithOptions:方法中添加以下代码:
NSString *account = @"Account";
Class accountClass = NSClassFromString(account);
NSLog(@"accountClass = %@",accountClass);
在一个新项目中,这将打印,accountClass = (null)但在添加MessageUI后将打印accountClass = Account.
此外,如果您class-dump在私有Message框架上使用,您将看到接口声明Account.
现在,您在帖子中列出了5个项目作为问题,我将尝试解决它们
Message框架是弱链接的,因此在链接时不会导致重复的符号错误.Message框架中.#import,但在运行时,所有类都与您的应用程序一起加载,并且没有"可见性"或类似于运行时强制执行的任何类.就行动而言,我只是将我的模型类重命名为前缀.我不知道任何其他解决方案.
| 归档时间: | 
 | 
| 查看次数: | 977 次 | 
| 最近记录: |