@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 accountAccount *newAccount = [NSEntityDescription insertNewObjectForEntityForname:[Account entityname] inManagedobjectContext:self.managedobjectContext];
现在,我猜测MessageUI.framework中有一些类导致冲突,但我有几个问题:
>该应用程序编译并运行正常,没有编译时名称冲突
>框架中的其他组件似乎是前缀命名空间(即:MFMailComposeVIEwController),那么理论帐户应该不是MFAccount吗?
>我甚至没有做#import< MessageUI / MessageUI.h>或稍微紧凑的#import< MessageUI / MFMailComposeVIEwController.h>,后者我检查过并且没有看到Account的定义,所以我不确定为什么甚至会加载可能的冲突.
>为了确定,我重新生成了我的Core Data类,并重置了所有模拟器设置,仍然没有骰子.
>从项目中删除框架并立即构建设置可以解决问题.
您可以通过创建新项目来验证MessageUI框架是否加载了Account类,并在app delegate的应用程序中:dIDFinishLaunchingWithOptions:方法,添加以下代码:
Nsstring *account = @"Account";Class accountClass = NSClassFromString(account);NSLog(@"accountClass = %@",accountClass);
在一个新项目中,这将打印accountClass =(null),但在添加MessageUI后,它将打印accountClass = Account.
此外,如果您在私有Message框架上使用class-dump,您将看到Account的接口声明.
现在,您在帖子中列出了5个项目作为问题,我将尝试解决它们
>我对链接时间流程的了解不够了解
框架要肯定,但我怀疑Message框架是弱链接的,因此在链接时不会导致重复的符号错误.
>面向公众的人名称正确但有些没有证件
有些不是.此外,冲突的类位于私有Message框架中.
>那根本不重要.编译器将使用#import,但at
运行时,所有类都加载了您的应用程序
没有“可见性”或类似于运行时强制执行的任何内容.
> N / A.
>与其他证据一致
就行动而言,我只是将我的模型类重命名为前缀.我不知道任何其他解决方案.
总结以上是内存溢出为你收集整理的objective-c – iOS – 核心数据模型与Mail Framework冲突?全部内容,希望文章能够帮你解决objective-c – iOS – 核心数据模型与Mail Framework冲突?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)