【发布时间】:2015-08-17 01:41:05
【问题描述】:
我想使用 Swift 为 System Preferences 应用程序构建一个 OS X Preference Pane 插件,但我无法让它工作。
单击“下一步”后,Xcode 模板不提供选择 Swift 作为语言的选项,而是自动在 Objective-C 中创建项目。
无需添加任何代码或执行任何其他操作,项目即可成功构建。如果您右键单击产品并选择“在外部编辑器中打开”,系统首选项将成功安装并加载首选项窗格。
效果很好!
这很好,但是现在,我想使用 Swift 添加一个新的 Cocoa 子类。
接受默认值,并允许它创建桥接头。
现在,退出系统偏好设置并不添加任何代码,重新构建项目。和以前一样,右键单击产品并“在外部编辑器中打开”。
系统偏好设置会确认替换偏好设置面板,它会安装它,但是加载失败。
如果您在 Finder 中显示构建的 Product,除了 .prefPane 插件之外,还有一个 .swiftmodule 文件夹。
我猜在构建阶段或构建设置中缺少一些东西,负责将 .swiftmodule 与包的其余部分合并,但一直无法弄清楚。
添加一些使用新类的代码后,需要导入 Swift 项目的伞头文件(“Prax-Swift.h”)来使项目编译,但是导入伞头文件并不能解决这个问题。
// Prax.h
#import <PreferencePanes/PreferencePanes.h>
#import "Prax-Swift.h"
@interface Prax : NSPreferencePane
@property PraxObject *ourPrax;
- (void)mainViewDidLoad;
@end
我还尝试删除 Prax.h 和 Prax.m 并在 Swift 中简单地实现 NSPreferencePane 子类。和以前一样,项目构建和安装,但系统偏好设置无法加载它。
// Prax.swift
import PreferencePanes
class Prax: NSPreferencePane {
override func mainViewDidLoad() {
}
}
对不起,如果我在这个问题中使用了太多图片;这似乎是解释问题并使其易于重现的最清晰方法。可能有一个简单的解决方案。有什么想法吗?
【问题讨论】:
-
您查看过控制台应用程序吗?您可能会在此处找到错误消息。
-
不,控制台中没有显示错误消息。有系统首选项活动消息,反映了“显示全部”和其他访问的首选项窗格,但没有关于它无法加载的那个。我不希望它提供有关该问题的太多线索,因为这似乎与 Xcode 没有正确构建插件包有关。
标签: xcode macos swift system-preferences nspreferencepane