我试图在Cocoa PyobJC项目中使用Brandon Walkin的BwsplitView from BWToolkit。运行项目时,会收到以下错误消息:

NSInvalidUnarchiveOperationException - *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (BWSplitView)

这是否意味着他的工具包与pyobc项目不兼容,所以我应该只使用默认的interface builder视图?BWToolkit对我的程序来说非常完美,我计划在界面的其他地方使用它。

最佳答案

我怀疑你得到了这个错误,因为你在尝试加载的NIB/XIB文件中有一个BWSPLITVIEW。为了在nib文件中取消对象的归档,运行时需要能够创建归档类的实例(例如BWSplitView)引发的异常是因为bwsplitview对运行时不可用。在objective-c应用程序中,您将链接到bwtoolkit框架,动态链接器将完成使bwsplitview对运行时可用的工作。在PyObjC应用程序中,您必须显式地导入希望可用于运行时的类(这些类在后台不为您链接,例如Cocoa类)幸运的是,BWToolkit有一个桥支持文件,因此您可以直接导入它(假设它位于标准框架位置,如/Library/framework s)如果需要加载没有网桥支持文件的框架,可以使用objc.loadBundle然后使用NSClassFromString获取类对象。
另一方面,/System/Library/Frameworks是为苹果提供的系统框架保留的您不应该将第三方框架放在该文件夹中,因为苹果可能会在系统更新时擦除该文件夹(不太可能但有可能)。向系统中的所有用户提供的第三方框架应放在/library/frameworks中,用户特定框架类似地放在~/library/frameworks中,应用程序包中的内容/框架中的应用程序特定框架。

关于python - BWSplitView和PyObjc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/869912/

10-09 08:25