问题标签 [scripting-bridge]

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.

0 投票
3 回答
472 浏览

python - 如何包装要从 Python 调用的 Objective-C?

我创建了一个 Objective-C 框架,我想通过 python 脚本导入和访问它。我了解如何在 Python 中导入这些东西,但是我需要在 obj-c 端做什么才能使该框架可导入?

谢谢

0 投票
2 回答
938 浏览

objective-c - 在 10.6 下使用 Scripting Bridge 调用 Finder 时返回值不正确(但不会抛出错误)

我一直在 StackOverflow 和其他地方浏览大量与 Scripting Bridge 相关的线程,并且似乎无法在弄清楚为什么对 Finder 进行 Scripting Bridge 调用的 Cocoa 代码块不再正常工作方面取得任何进展10.6以下。(类似版本的代码在 10.5 下似乎可以正常工作,我不知道是什么导致了行为变化。)

基本上,我正在尝试访问 Finder 窗口的一些显示选项。我有以下代码块作为我的测试用例。我将它指向一个显示为图标的文件夹,我运行代码时,没有一个错误块跳闸,但我总是在最后得到一个无意义的响应(iconSize = 0)。

此代码的纯 AppleScript 版本运行良好,即使指向同一个文件夹:

我的直觉是某些东西在通过脚本桥时被奇怪地转换或转换,但我完全不知道要检查什么或在哪里看。在从 Finder 检索对象并将调用标记到各种 SB 相关赋值语句的末尾时,我尝试打印出类名[SBObject *get],但无济于事。

有任何想法吗?


更新

好的,所以我在上面的代码中发现了错误是在哪里产生的,尽管我觉得我离解决问题还差得远。事实证明,Scripting Bridge 的惰性评估掩盖了这个问题。如果在检索到 FinderWindow 的引用后,插入以下两行代码:

NSString *test = [folderWindow name]; NSLog(@"Return value == %@; error message == %@", test, [[folderWindow lastError] localizedDescription]);

然后,Scripting Bridge 尝试实际执行名称检索,但失败,并返回一条更具建设性的错误消息:

Return value == (null); error message == The operation couldn’t be completed. (OSStatus error -1700.)

这太棒了(进步?!),但仍然没有让我更接近解决问题。该错误消息似乎表明某处存在 AEcoercion 问题,但我不确定如何继续解决它。生成的 Finder.h 文件(以及 Finder 的 AppleScript 字典)都非常清楚我应该取回对 FinderWindow 对象的引用这一事实,并且将folderWindow对象打印出来似乎可以验证在name调用之前一切正常。

0 投票
2 回答
937 浏览

file - 通过 ScriptingBridge 在 iTunes 中获取特定曲目

我正在更新我的 OS X 程序以接受 iTunes 删除,修改文件中的元数据,然后刷新(获取信息)删除的文件,以便 iTunes 可以更新其元数据库。

我已经让 drop 工作了,它提供了有关文件的一些杂项信息的字典,包括轨道 ID、持久 ID 和位置。我现在需要通过文件位置或 drop info 提供的持久 ID 获取特定曲目,因此我可以在其上调用 refresh 方法以强制 iTunes 重新检查文件并更新更改到元数据。

我已经导入了 iTunes 头文件并创建了 SBApplication 对象,在这一点上,我非常坚持以一种有效的方式来获得正确的曲目。

0 投票
2 回答
206 浏览

ios - 使用脚本桥通过 iTunes 将文件从桌面应用程序发送到 iPad

我想知道是否可以通过 iTunes 中的文件共享将桌面应用程序中的导出(zip)过程自动化到 iPad 上的应用程序中。我发现的最有可能的技术是编写 Bridge 脚本。

0 投票
1 回答
1036 浏览

cocoa - 使用 Scripting Bridge 在 iPhoto 中创建相册并将图片导入此相册

我有一个基于文档的绘图应用程序,允许用户将最终文档保存为 JPEG 文件。每当用户保存 JPEG 时,我想将图片导入 iPhoto 相册“MyAppName 相册”。我正在使用 Using Scripting Bridge,并且我已将 iPhoto.h 文件添加到我的应用程序中。我还添加了 ScriptingBridge.framework

即使创建专辑“MyAppName 专辑”,我也遇到了一些真正的麻烦。

你能告诉我以下伪代码的一些代码吗:

为了您的方便,我在下面添加了 iPhoto.h:

0 投票
0 回答
151 浏览

objective-c - ScriptingBridge 电子邮件转发错误

我将开发自己的电子邮件插件,并将其包含在我的应用程序中。目前,我在将电子邮件转发给第三个用户时遇到问题。有代码片段:

电子邮件应用程序.h

MailApplication *mail;

@property(nonatomic, retain) MailApplication *mail;

电子邮件应用程序.m

@synthesize mail

-(void)loadAllEmails{

}

-(void)acceptMessageForwarding:(MailMessage *)message To:(NSString *)address{

}

问题是,每次当我尝试将 forwardMessage 添加到 outboundMessages- 数组时,应用程序都会崩溃并输出:-[SBElementArray addObject:]: can't add an object that already exists。 (MailMessage *) 消息没问题,所以问题出在其他地方。我注意到,在分配新的 MailOutgoingMessage 并将 classForScriptingClass 文本从传出消息更改为另一个时,电子邮件发送脚本也会出现同样的错误。我需要一些其他参数吗?还是我必须通过其他方式进行转发?

0 投票
1 回答
1129 浏览

objective-c - 使用 Cocoa Scripting Bridge 在事先不知道收件人的情况下发送电子邮件

我正在使用默认 Apple 提供的 SB​​SendEmail 示例中的代码来发送电子邮件。就我而言,唯一的区别是我事先不知道收件人,我希望用户在邮件窗口的收件人字段中输入收件人。这是我的代码:

由于我没有指定收件人,邮件应用程序会打开一个警报,提示错误,您没有指定任何收件人。尽管此警报只有一个按钮“编辑消息”,但用户可以使用该按钮添加收件人。此警报是否有可能无法打开?

0 投票
2 回答
254 浏览

objective-c - Cocoa/Finder:奇怪的路径

我向取景器询问当前的取景器窗口位置/路径/无论如何

这导致了这样的路径:

有没有一种通用的方法可以将其转换为可用的路径,例如/users/eike,还是我必须自己修补一些东西?

0 投票
2 回答
1336 浏览

objective-c - Finder 脚本桥接至关机

我尝试使用 Application Scripting Bridge 让我的 Mac 进入睡眠状态。代码如下所示:

但它不起作用。任何想法为什么它不起作用?没有编译错误或警告,但它不起作用……</p>

0 投票
3 回答
8547 浏览

cocoa - Cocoa bindings for the Go language

Is it possible to write macOS/Cocoa applications in Google Go?

Is there a Go-Obj-C bridge? (it seems to me that Obj-C dynamism would be a great fit for Golang's interfaces)

Can I at least link the two together and make them talk to each other via plain-old C functions?