我正在尝试在一个Cocoa PyObjc项目中使用来自BWToolkit的Brandon Walkin的BWSplitView。当我运行该项目时,我收到以下错误消息:
NSInvalidUnarchiveOperationException - *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (BWSplitView)这是否意味着他的工具包与PyObc项目不兼容,所以我应该只使用默认的接口构建器视图?BWToolkit似乎非常适合我的程序,我计划在我的界面中的其他地方使用它。
发布于 2009-05-15 17:51:02
我怀疑您之所以得到这个错误,是因为您试图加载的nib/xib文件中有一个BWSplitView。为了解压nib文件中的对象,运行时需要能够创建归档类的实例(例如BWSplitView)。抛出的异常是因为BWSplitView对运行时不可用。在Objective-C应用程序中,您将链接到BWToolkit框架,动态链接器将执行使BWSplitView对运行时可用的工作。在PyObjC应用程序中,您必须显式地导入您希望运行时可用的类(这些类不是在幕后链接的,比如Cocoa类)。幸运的是,BWToolkit有一个桥支持文件,因此您可以直接导入它(假设它位于标准框架位置,如/库/框架)。如果您需要加载一个没有桥支持文件的框架,您可以使用objc.loadBundle,然后使用NSClassFromString来获取类对象。
另外,/ system /Library/Frameworks是为Apple提供的系统框架保留的。你不应该将第三方框架放在那个文件夹中,因为Apple可能会在系统更新时擦除该文件夹(不太可能,但有可能)。向系统上的所有用户提供的第三方框架应该放在/Library/Frameworks中,用户特定的框架类似地放在~/Library/Frameworks中,应用程序特定的框架放在Contents/Frameworks中,在应用程序的应用程序捆绑包中。
发布于 2009-05-15 17:42:52
我已经使用以下步骤修复了这个问题:
中的导入BWToolkitFramework
发布于 2009-11-20 11:20:31
我们也收到了类似的信息:
*** Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MKMapView)’在我们的例子中,这是由于目标的构建设置下的“框架搜索路径”设置中的一个错误条目造成的。当该条目被清除时,问题就消失了。
https://stackoverflow.com/questions/869912
复制相似问题