python-BWSplitView和PyObjc

我正在尝试在可可PyObjc项目中使用BWToolkit中的Brandon Walkin的BWSplitView.运行项目时,出现以下错误消息:

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

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

解决方法:

我怀疑您收到了该错误,因为您尝试加载的nib / xib文件中有一个BWSplitView.为了在nib文件中取消归档对象,运行时需要能够创建已归档类的实例(例如BWSplitView).引发的异常是因为BWSplitView对运行时不可用.在Objective-C应用程序中,您将链接到BWToolkit框架,而动态链接器将完成使BWSplitView可用于运行时的工作.在PyObjC应用程序中,您必须显式导入您希望对运行时可用的类(未在幕后为您链接的类,例如Cocoa类).幸运的是,BWToolkit有一个网桥支持文件,因此您可以直接导入它(假设它在标准框架位置,例如/ Library / Frameworks中).如果需要加载没有桥支持文件的框架,则可以使用objc.loadBundle,然后使用NSClassFromString来获取类对象.

附带说明一下,/ System / Library / Frameworks保留用于Apple提供的系统框架.您不应将第三方框架放在该文件夹中,因为Apple可能会在系统更新时擦除该文件夹(不太可能,但有可能).对于系统上所有用户可用的第三方框架,应放在/ Library / Frameworks中,类似的特定于用户的框架应放在〜/ Library / Frameworks中,而在Contents / Frameworks的应用程序特定框架中应放在应用程序的应用程序捆绑包中.

上一篇:OC8 文件加载与保存


下一篇:从C使用NSProcessInfo