为啥我的产品->存档因“非法尝试在不同上下文中的对象之间建立关系”压缩类型“而失败?

Posted

技术标签:

【中文标题】为啥我的产品->存档因“非法尝试在不同上下文中的对象之间建立关系”压缩类型“而失败?【英文标题】:sWhy does my Product->Archive fails with 'Illegal attempt to establish a relationship 'compressionType' between objects in different contexts'?为什么我的产品->存档因“非法尝试在不同上下文中的对象之间建立关系”压缩类型“而失败? 【发布时间】:2020-02-16 18:31:46 【问题描述】:

在设备上构建和运行我的应用程序时一切正常。问题是在归档 xcode 结束时总是给出这个错误。你能至少帮我调试一下这个错误吗?因为每次我都要花 20 分钟来看看它是否再次失败。

获得的调试信息:当我将一些压缩图像添加到资产目录时引发此错误。当我删除压缩图像并添加原始未压缩图像时,不会引发错误。

【问题讨论】:

我想你已经回答了你自己的问题:“当我删除压缩图像并添加原始未压缩图像时,不会引发错误。” .这不能解决你的问题吗?显然,您的“压缩图像”和资产目录存在兼容性问题 是的,我可以通过这种方式解决问题,但是查找有问题的图像太耗时了。我也不想从资产目录中的所有图像中删除压缩。从这个错误消息中,有没有办法在资产目录中找到有问题的图像? 【参考方案1】:

您是如何压缩图像的?

This link 指出,当您尝试在核心数据中的不同对象之间建立关系时,会引发类似的错误。我认为资产目录必须在底层使用核心数据。我的猜测是,您压缩和重新应用图像所做的任何事情都会以某种方式将元数据工件添加到您的资产项中,这些工件显示为与 Xcode 的其他资产或对象的关系,这是不允许的。我不是根据经验说的,只是阅读您的错误。

如果您认为新的压缩图像很好并且不应该有任何怪异,请尝试删除资产目录中的项目并使用相同的键/名称创建新资产,然后将压缩图像添加到。资产目录项目有时会保留奇怪的元数据。

此外,即使在大型项目中,20 分钟的编译时间也是很长的,如果您认为可以在新项目中重新创建错误,那么测试起来会快得多。只需使用几个图像视图制作一个新图像,将旧图像放在第一位,然后尝试在那里重新运行。如果您在那里工作,您应该能够将资产目录内容从一个项目复制到下一个项目。

编辑:还有直接在 xibs 或故事板文件中使用的图像吗?似乎编译器咳出的一些元数据可能与 xib 文件有关。我对您帖子中编译器产生的内容不太熟悉,但您应该检查资产更改后您的界面构建器文件是否仍然正确加载。

【讨论】:

以上是关于为啥我的产品->存档因“非法尝试在不同上下文中的对象之间建立关系”压缩类型“而失败?的主要内容,如果未能解决你的问题,请参考以下文章

非法尝试在不同上下文中的对象之间建立关系“对象”

非法尝试在不同上下文中的对象之间建立关系“清单”

单一上下文但“非法尝试在不同上下文中的对象之间建立关系‘xyz’

NSInvalidArgumentException:非法尝试在不同上下文中的对象之间建立关系

NSKeyedArchiver 因 CLLocationCoordinate2D 结构而失败。为啥?

Xcode 产品 -> 存档已禁用