macos - cocoa 脚本: Use special string types like raw data

标签 macos cocoa applescript cocoa-scripting

我的应用程序有一些原始数据内容,我希望能够提供给 AppleScript,以便至少可以查看它,即使不能通过将其保存到文件或将其设置为支持它的其他对象来处理。

现在,我不明白使用哪种数据类型来实现这一点。

例如,查看脚本编辑器的输出:

tell application "Script Editor"
  the clipboard as record
    --> {Unicode text:"text",
         «class BBLM»:«data BBLM6C6C756E»,
         string:"text"}
end tell

如何返回这些“数据...”,它们显然是实际数据的 4 字符代码和十六进制字符串编码字节的组合。

我尝试从我的可编写脚本的属性返回包含原始字节数据的 NSData 对象,但这不起作用。

更新

看来这与实现 scripting<type>Descriptor 有关和scripting<type>WithDescriptor 。除了在 Sketch 示例代码中使用之外,我找不到任何相关文档。我假设如果我碰巧在 Sdef 中定义了这样的自定义类型,则会为该类型调用这些函数。

但是:我不会提前知道要发送的类型,因此我无法在 Sdef 中预先定义它们。我的情况更类似于the clipboard :我想要返回类似剪贴板的数据,所以我在运行时只知道它们的 4 个字符类型。这意味着我不会被这些处理程序询问。必须有其他一些方法来一般地创建和接收这些类型,就像剪贴板实现的方式一样。

最佳答案

回复:“...实现脚本Descriptor 和脚本WithDescriptor。我找不到任何关于此的文档...”

首先要从 Cocoa 脚本指南 (2008) 中的“键值编码和 Cocoa 脚本”部分开始。有很多方法将类型嵌入到方法名称中。许多内容也记录在基金会的 NSScriptKeyValueCoding 协议(protocol)引用页面中,但您必须阅读“讨论”部分才能找到它们。例如,在:

- (id)valueWithUniqueID:(id)uniqueID inPropertyWithKey:(NSString *)key

讨论说:“方法 valueInWithUniqueID: 如果存在则被调用。”

因此,在 Widgets 类中,您将实现 valueInWidgetsWithUniqueID:

scriptingDescriptor 和 scriptingWithDescriptor 是特殊的转换处理程序,当您在应用程序的 .sdef 中使用元素时会使用它们,这就是它们出现在 Sketch 中来处理 typeRGBColor 数据类型(一个列表)的原因。 3 个整数。我也无法在 Sketch 代码之外找到这些文档,但我可以确认

scriptingRGBColorDescriptor

由以下方法调用:

NSObject(NSScriptAppleEventConversion)
NSAppleEventDescriptor(NSScriptConversion)

关于macos - cocoa 脚本: Use special string types like raw data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385941/

相关文章:

applescript - 如何在自动机中进行文本替换(正则表达式)

email - 如何使用 applescript 获取默认邮件客户端?

objective-c - NSTextField 不会设置 StringValue

iphone - 正确使用 NSInitationOperation 和 NSOperationQueue

objective-c - 键值编码原语

applescript - 在哪里可以找到 Microsoft Outlook 2011 中 AppleScript 可用的命令/属性

macos - 从图表中提取音频数据 kAudioUnitSubType_GenericOutput

java - 无法找到或加载主类?

objective-c - 在 Mac OS X 应用程序中拥有 DAL 和 BLL 层是否可行?

c - Mac OS X 上 exuberant ctags 的问题