gpt4 book ai didi

objective-c - iOS - 核心数据模型与邮件框架冲突?

转载 作者:可可西里 更新时间:2023-11-01 03:09:38 25 4
gpt4 key购买 nike

我有一个核心数据对象,Account , 表示为 NSManagedObject 的子类:

@interface Account : NSManagedObject

我的整个应用程序开发得很好,但是,当我添加 MessageUI.framework 时所以我可以获得一个撰写电子邮件 View Controller ,一切都变得一团糟。该应用程序链接和编译良好,运行良好。直到,也就是说,我开始与我以前工作的 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 中有一些类引起冲突,但我有几个问题:

  1. 应用程序编译和运行正常,没有编译时名称冲突
  2. 框架中的其他组件似乎是前缀命名空间(即:MFMailComposeViewController),所以理论上的帐户不应该是MFAccount
  3. 我什至没有做 #import <MessageUI/MessageUI.h>或稍微紧一点的 #import <MessageUI/MFMailComposeViewController.h> ,后者我检查过并没有看到 Account 的定义,所以我不确定为什么会加载可能的冲突。
  4. 为了确定,我重新生成了核心数据类,并重置了所有模拟器设置,但仍然没有成功。
  5. 从项目和build设置中删除框架可立即解决问题。

最佳答案

我遇到过这种情况,使用的是精确的框架(该类称为 Broadcaster )。在这种情况下,私有(private) Message框架由 MessageUI 链接, 这个框架提供了 Account实现。

您可以验证 MessageUI 框架是否加载了 Account通过创建一个新项目来上课,并在应用程序委托(delegate)的 application:didFinishLaunchingWithOptions: 中方法,添加如下代码:

NSString *account = @"Account";
Class accountClass = NSClassFromString(account);
NSLog(@"accountClass = %@",accountClass);

在新项目中,这将打印 accountClass = (null)但在添加 MessageUI 后它会打印 accountClass = Account .

此外,如果您使用 class-dump关于私Message框架,你会看到 Account 的接口(interface)声明.

现在,您在帖子中列出了 5 个项目作为问题,我会尝试解决它们

  1. 我对与框架可以肯定地说,但我怀疑 Message框架是弱链接的,因此不会在链接时导致重复符号错误。
  2. 面向公众的名字正确,但有些没有记录那些不是。此外,冲突类在私有(private)中 Message框架。
  3. 那根本不重要。编译器将使用 #import , 但在运行时,所有类都随您的应用程序一起加载没有“可见性”或运行时强制执行的任何类似内容。
  4. 不适用
  5. 与其他证据一致

就操作过程而言,我只是重命名了我的模型类以具有前缀。我不知道有任何其他解决方案。

关于objective-c - iOS - 核心数据模型与邮件框架冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com