Frameworks Can';t在框架中解码Swift对象

Frameworks Can';t在框架中解码Swift对象,frameworks,decode,Frameworks,Decode,我有一个完美的工作应用程序。我想模块化我的应用程序,因为我设想在其他应用程序中需要它的一点点。因此,我创建了两个框架。这两个框架构建得很好,嵌入了这两个框架的my app也构建得很好 我的问题是,当我尝试取消归档数据时,其中有一个类现在在我的一个框架中。我得到这个错误: reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (myProjecy.MyObject) for key

我有一个完美的工作应用程序。我想模块化我的应用程序,因为我设想在其他应用程序中需要它的一点点。因此,我创建了两个框架。这两个框架构建得很好,嵌入了这两个框架的my app也构建得很好

我的问题是,当我尝试取消归档数据时,其中有一个类现在在我的一个框架中。我得到这个错误:

reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (myProjecy.MyObject) for key (NS.objects); the class may be defined in source code or a library that is not linked'
在我的应用程序中,我可以很好地创建MyObject实例。框架中所有必需的方法要么是开放的,要么是公共的(或者应用程序甚至不会构建)

我错过了什么

框架中的类在Swift中,试图将其解构的类是Obj-C。我使用的是Xcode 9


谢谢。

好的。我发现了问题。再次访问这个网站让我找到了一个解决方案

在我的例子中,由于原始对象是存档的,而我的应用程序仍然是应用程序的一部分,并且我的应用程序指定使用模块名,因此该对象是使用应用程序的模块名存档的。现在,unarchiver试图在框架中使用模块名,这正是导致问题的原因

所以,我基本上要撒一些:

NSKeyedUnarchiver.setClass(ClassName.self, forClassName: "AppModule.ClassName")
NSKeyedArchiver.setClassName("AppModule.ClassName", for: ClassName.self)
一切都很好

如果没有此代码,unarchiver将尝试使用“FrameworkModule.ClassName”