首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在objc-appscript中编写以下rb-appscript?

如何在objc-appscript中编写以下rb-appscript?
EN

Stack Overflow用户
提问于 2010-02-21 07:29:02
回答 3查看 354关注 0票数 0

appscript objc-trunk中的文档在“性能问题”一节中随机使用了ruby。

代码语言:javascript
复制
require "appscript"
include Appscript

desiredEmail = 'sam.brown@foo.com'

p app('Address Book').people[
        its.emails.value.contains(desiredEmail)
        ].name.get

这将如何在Objective-C中编写?如果这似乎是一个过于基本的问题,我道歉,我没有使用Ruby的经验。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-21 09:19:46

如果您运行ruby脚本并使用ASTranslate,它应该会将原始的appscript命令转换为Objc-appscript。

Edit01:

我想它看起来会像这样。我还没有运行工具来生成胶水代码,所以我在猜测应用程序名称的显示方式。

代码语言:javascript
复制
#import "AddressBookGlue.h" //Dont know the precise name 

AddressBookApplication *abApp=[[AddressBookApplication alloc] initWithName: @"Address Book.app"];

NSString *desiredEmail=@"sam.brown@foo.com"

NSString *returnedName= [[[[[[abApp people] emails] value] contains:desiredEmail] name] get]; 

基本上,它遵循Objectic-c从点语法转换时使用的相同规则:在原始语法中只要有点,Objective-C中就会有一个方括号。

我可能会补充说,如果你要做很多这种类型的脚本,最好花一两天时间学习ruby或python的基础知识。在点语法中使用OSA要比使用嵌套语法容易得多。仅仅是看着Objc-appscript文档中的那些括号就让我热泪盈眶。

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 03:53:58

对objc-appscript手册的不完整表示歉意,该手册最初是从rb-appscript移植而来的。(FWIW,今年春天我应该有一些时间来处理appscript。)

首先将Ruby代码转换回AppleScript可能是最简单的方法:

代码语言:javascript
复制
tell application "Address Book"
   get name of every person where value of its email contains "hengist.podd@virgin.net"
end tell

通过ASTranslate运行它会得到以下结果:

代码语言:javascript
复制
#import "ABGlue/ABGlue.h"
ABApplication *addressBook = [ABApplication applicationWithName: @"Address Book"];
ABReference *ref = [[[addressBook people] byTest: [[[ABIts emails] value] contains: @"hengist.podd@virgin.net"]] name];
id result = [ref getItem];
票数 1
EN

Stack Overflow用户

发布于 2010-02-21 08:56:48

据我所知,这是打印每个电子邮件地址为"sam.brown@foo.com“的人的名字。

在Cocoa中如何做到这一点没有直接的关联。幸运的是,Address Book是可脚本化的,这意味着您可以使用Scripting Bridge framework从Cocoa应用程序与其进行交互。

这个页面对如何简单地通过ScriptingBridge与Mail.app进行交互有一个非常好的解释:http://robnapier.net/blog/scripting-bridge-265

希望这能给你足够的信息,让你朝着正确的方向前进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2304183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档