- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 Cocoa PyObjc 项目中使用来自 BWToolkit 的 Brandon Walkin 的 BWSplitView。当我运行该项目时,我收到以下错误消息:
NSInvalidUnarchiveOperationException - *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (BWSplitView)
这是否意味着他的工具包与 PyObc 项目不兼容,所以我应该只使用默认的界面构建器 View ? 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 中,在应用程序的应用程序包中。
关于python - BWSplitView 和 PyObjc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869912/
我正在尝试在 Cocoa PyObjc 项目中使用来自 BWToolkit 的 Brandon Walkin 的 BWSplitView。当我运行该项目时,我收到以下错误消息: NSInvalidUn
我是一名优秀的程序员,十分优秀!