问题标签 [xcode-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - Xcode Extension + Helper Mac App + Launch Arguments?
注意:这里似乎存在类似的问题:Launch Helper Application with Launch Arguments in the Sandbox,但我在下面提供了一个更详尽的示例和源代码。
简短的前言:
我想编写一个 Xcode 源代码编辑器扩展(Xcode 8 中的新功能),它在触发时会启动我正在编写的配套 Mac 应用程序,并将用户在触发扩展时正在查看的源文件的行传递给 Mac 应用程序.
然后,助手 Mac 应用程序将为用户提供一个界面,用于执行其编辑功能。当用户完成他们的更改时,他们按下某种“保存”或“提交”按钮,然后这些更改被传播回 Xcode 扩展,然后返回到原始源文件本身。
到目前为止我所拥有的:
我为我的助手 mac 应用程序创建了一个简单的 Mac 应用程序。它目前所做的只是,在它的 Application Delegate 中的 applicationDidFinishLaunching(...) 实现中,尝试构建传入的启动参数的字符串,并将该字符串显示为警报的消息正文。见下文(注意我尝试使用 ProcessInfo.processInfo.arguments 和 CommandLine.arguments):
我创建了一个相当样板的 Xcode 扩展,当通过 perform(with ...) 函数调用它时,会启动我的配套 Mac 助手应用程序。我尝试了多种方式启动助手应用程序,包括:
使用 NSWorkSpace 的 launchApplication(at: options: configuration:) :
使用自定义 Process 实例运行 bash 命令,同时尝试“open”和“fork”:
问题
我已经存档/导出了帮助程序 Mac 应用程序并将其放在 Applications 文件夹中。当我构建并运行 Xcode 扩展并对其进行测试时,帮助程序 Mac 应用程序成功启动,但它从未在 applicationDidFinishLaunching(...) 中获取自定义启动参数。
我已经在几个地方阅读过,包括此处的 NSWorkSpace 配置选项的常量键的文档:https ://developer.apple.com/reference/appkit/nsworkspacelaunchconfigurationarguments “此常量不适用于沙盒应用程序。”
当我从终端运行相同的 bash 时:
帮助应用程序成功读取传递的 --args 并将它们显示在警报中。我担心的是,由于应用沙盒,这根本不可能,但我希望还有另一种我缺少的解决方案。如果可能的话,其他一些也可以使用的替代方法:
如果可以让 Xcode 扩展本身具有接口,而不是帮助 Mac 应用程序,那么这将解决问题。但是我不相信这是可能的。
我也可以启动助手 Mac 应用程序,然后在启动后与它进行通信,尽管我再次认为沙盒问题可能会发挥作用。
就其价值而言,我主要是一名 iOS 开发人员。
谢谢你的帮助,
- 亚当·艾斯菲尔德
xcode-extension - Xcode 代码扩展正在工作,现在它变灰了
这非常令人沮丧。我终于设法让我的 Xcode 源代码扩展在 Xcode(而不是调试器)中工作。
我已经快乐了一个星期。
我发现了几个错误。我修好了第一个,一切都继续工作。当我修复第二个 bug 时,Xcode 将我的扩展显示为灰色。
重新启动并没有解决它。Xcode-select 没有修复它。哦,现在苹果的“评论选择”也变灰了。
有没有人有一个好的解决方案来确保这个工作?
xcode - 是否可以一次将 Xcode 扩展应用于多个源文件?如果是这样,怎么做?
我想编写一个 Xcode 扩展来扫描特定代码片段的源代码。但是,这种扩展似乎只能在每个文件的基础上工作。例如,在这里您可以看到在按下按钮时,只有当前源文件被更改。有没有办法一次扫描多个源文件?
swift - 获取 Xcode 扩展的项目位置
我正在开发一个 Xcode 扩展,它需要获取项目路径,即运行我正在制作的扩展命令的项目/工作区的路径。我试过这样的事情:
但它只是返回零。我也尝试通过 FileManager 获取它,但它只返回扩展的路径。
swift3 - Xcode 不显示来自自定义编辑器扩展的错误文本
我创建了一个自定义 Xcode 编辑器扩展,如果未满足某些条件,它可能无法运行。
具体来说,它是一个排序行命令,如果有多个选择,或者选择的行少于两行,它将拒绝运行。
我已经定义了一个符合错误的枚举来定义我的错误也符合 LocalizedError。
在我的 perform(with:completionHandler:) 方法中,我使用适当的错误之一调用完成处理程序:
我期待显示错误的文本(“选择太多”)。相反,错误显示为:
操作无法完成。(Ext01.SortLinesCommand.CommandError 错误 1。)
我这样做是否不正确,或者这是 XcodeKit 或 Xcode 中的问题?
swift - 您可以在生成的 Xcode 扩展命令的菜单项中插入分隔符(在“编辑器”菜单下)吗?
在编写 Xcode 扩展时,您定义的任何命令都会自动显示为 Xcode 的“Editor/”菜单下的一个长列表。
例如,如果你用八个命令定义了一个名为“我的第一个 Xcode 扩展”的扩展,它看起来像这样......
但是,有些命令是相关的,所以我想将它们分组,像这样......
这是我在扩展类之后的示例: NSObject, XCSourceEditorExtension {
是否可以添加分隔符?
swift4 - Xcode Source Editor Extension 可以提示用户输入吗?
简单的问题。我编写了一个 Xcode 源代码编辑器扩展,作为我的一个命令的一部分,我必须提示用户输入以知道他们想要哪个选项。
我希望有一种简单的方法来显示警报,但我猜情况并非如此,我将不得不从扩展程序(通过 URL 方案)启动应用程序,然后使用进程间通信。
就像我说的,希望我是错的。我也是?
xcode - 如何分发 Xcode 扩展?
我创建了简单的 Xcode 扩展,我想将它发送给其他团队成员。我可以将整个项目发送给他们,让他们构建它。但是如何将该扩展导出为应用程序?我只想向他们发送一些文件,他们双击它并安装了该扩展程序。感谢帮助!