objective-c – iOS – 核心数据模型与Mail Framework冲突?

objective-c – iOS – 核心数据模型与Mail Framework冲突?,第1张

概述我有一个Core Data对象Account,表示为NSManagedObject的子类: @interface Account : NSManagedObject 我的整个应用程序开发得很好,但是,当我添加MessageUI.framework以便我可以获得一个撰写电子邮件视图控制器时,所有的地狱都会崩溃.该应用程序链接和编译很好,运行得很好.直到,也就是说,我开始与我以前工作的Account对 我有一个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 accountAccount *newAccount = [NSEntityDescription                            insertNewObjectForEntityForname:[Account entityname]                             inManagedobjectContext:self.managedobjectContext];

现在,我猜测MessageUI.framework中有一些类导致冲突,但我有几个问题:

>该应用程序编译并运行正常,没有编译时名称冲突
>框架中的其他组件似乎是前缀命名空间(即:MFMailComposeVIEwController),那么理论帐户应该不是MFAccount吗?
>我甚至没有做#import< MessageUI / MessageUI.h>或稍微紧凑的#import< MessageUI / MFMailComposeVIEwController.h>,后者我检查过并且没有看到Account的定义,所以我不确定为什么甚至会加载可能的冲突.
>为了确定,我重新生成了我的Core Data类,并重置了所有模拟器设置,仍然没有骰子.
>从项目中删除框架并立即构建设置可以解决问题.

解决方法 我已经遇到过这种情况,这是一个确切的框架(这个类叫做broadcaster).在这种情况下,私有Message框架由MessageUI链接,并且此框架提供Account实现.

您可以通过创建新项目来验证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冲突?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存