Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在objc appscript中编写以下rb appscript?_Objective C_Cocoa_Sourceforge Appscript_Rb Appscript - Fatal编程技术网

Objective c 如何在objc appscript中编写以下rb appscript?

Objective c 如何在objc appscript中编写以下rb appscript?,objective-c,cocoa,sourceforge-appscript,rb-appscript,Objective C,Cocoa,Sourceforge Appscript,Rb Appscript,appscript objc主干中的文档在“性能问题”一节中随机使用ruby 这将如何用Objective-C书写?我很抱歉,如果这似乎是一个过于基本的问题,我对Ruby没有经验 谢谢。据我所知,这就是打印每个收到“山姆”电子邮件的人的名字。brown@foo.com“ 如何在可可中做到这一点没有直接的相关性。幸运的是,通讯簿是可编写脚本的,这意味着您可以使用从Cocoa应用程序与之交互 本页对如何通过ScriptingBridge与Mail.app进行简单交互进行了非常好的解释: 希望这能为您

appscript objc主干中的文档在“性能问题”一节中随机使用ruby

这将如何用Objective-C书写?我很抱歉,如果这似乎是一个过于基本的问题,我对Ruby没有经验


谢谢。

据我所知,这就是打印每个收到“山姆”电子邮件的人的名字。brown@foo.com“

如何在可可中做到这一点没有直接的相关性。幸运的是,通讯簿是可编写脚本的,这意味着您可以使用从Cocoa应用程序与之交互

本页对如何通过ScriptingBridge与Mail.app进行简单交互进行了非常好的解释:


希望这能为您提供足够的信息,让您朝着正确的方向前进。

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

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

#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比在嵌套语法中使用OSA容易得多。只要看看Objc-appscript文档中的所有这些括号,我的眼睛就会流泪

对于objc appscript手册的不完整性表示歉意,正如您所知,该手册最初是从rb appscript移植而来的。(FWIW,今年春天我应该有一些时间来编写appscript。)

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

tell application "Address Book"
   get name of every person where value of its email contains "hengist.podd@virgin.net"
end tell
通过ASTranslate运行它可以实现以下功能:

#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];

这个例子在哪里。如果我在上下文中看到它,我可能能够翻译它。我正在使用另一个名为“AppScript”的框架,它是苹果事件的包装器。我的问题与AppScript的使用有关。@demonslayer319-您问过如何在Objective-C中与通讯簿交互。脚本桥就是这样做的。实际上,我在代码中根本没有使用通讯簿。我使用AppScript的原因不同,但每个应用的一般用法都是一样的,所以将这段代码(出于一些随机的令人沮丧的原因出现在objc文档中)翻译成objc AppScript对我来说是有帮助的。Dave:objc AppScript和脚本桥都是objc到苹果的事件桥。(Appscript功能更强大、更可靠、支持更好;SB可以方便地捆绑在操作系统中。您可以付费,等等)
#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];