2013-05-16 28 views
1

我正在尝试使用Apple页面(来自iWork)与Objective-C的Scripting Bridge。Apple Pages - 脚本桥和选择内容

这是工作的AppleScript:

tell application "Pages" 
    set name of item 1 of contents of (get selection) to "myLittleTextBox" 
end tell 

如何能够做到在Objective-C与脚本大桥是一回事吗?

我试图Cocoa Scripting Bridge and <contents> element 下尖,但没有运气...

奇怪的是,读取性能是没有问题的:

PagesApplication *myPages = [SBApplication applicationWithBundleIdentifier:@"com.apple.iWork.Pages"]; 
NSLog(@"myPages.selection.properties:%@",myPages.selection.properties); 

...但我没有运气设置或访问选择中的对象。

当然,我可以通过NSAppleScript发送AppleScript,但嘿,这太容易了。 ;)

+0

我刚刚更新我的如何得到你想要的答案。 – markhunte

回答

1

那么我可以得到属性项。返回的属性对象是一个数组。

id selObject = pages.selection.properties; 


NSString* theName = [[selObject objectAtIndex:0]objectForKey:@"name"]; 
NSLog(@"theName = %@",theName); 

并设置它:

id selObject2 = pages.selection.get; 


[selObject2 setValue:@"myPage" forKey:@"name"]; 
+0

你让我的一天!这是工作! 什么我不明白,如果我调试selObject2其__NSArrayM,它似乎没有任何内容...我永远不会想出在__NSArrayM对象上调用setValue forKey的想法! –

+0

当我检查课程以了解正在返回的内容时,它的确引起了我的注意。查看https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/SBObject_Class/SBObject/SBObject.html和https://developer.apple.com/library/mac/#documentation/ Cocoa/Conceptual/ScriptingBridgeConcepts/UsingScriptingBridge/UsingScriptingBridge.html这会给你一些洞察。 (不是很多,但一些:-)) – markhunte

0

没关系NSAppleScript; AppleScriptObjC自10.6以来一直是标准功能。 ASOC允许您的ObjC代码像普通的Cocoa类和对象一样对待AppleScript脚本对象,AppleScript比用于与“AppleScriptable”应用程序进行通信的Scripting Bridge更简单,更可靠。有关更多信息,请参阅this post