2013-05-16 3 views
1

Objective-C의 스크립팅 브리지로 Apple 페이지 (iWork)를 사용하려고합니다.애플 페이지 - 스크립팅 브리지 및 선택 내용

이 작업 AppleScript로 :

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

가 어떻게 스크립팅 브릿지와 목표 - 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

그럼 속성 항목을 가져올 수 있습니다. 반환 된 속성 개체는 Array입니다.

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 개체에서 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/ScriptingBridge 사용/ScriptingBridge.html 사용 다음은 몇 가지 통찰력을 제공합니다. (많지는 않지만 일부 :-)) – markhunte

0

마음에 들지 않는 NSAppleScript; AppleScriptObjC는 10.6 이후 표준 기능이었습니다. ASOC은 ObjC 코드가 일반 Cocoa 클래스 및 객체처럼 AppleScript 스크립트 객체를 처리 할 수있게 해주 며 AppleScript는 "AppleScriptable"응용 프로그램과 통신하기 위해 Scripting Bridge보다 쉽고 안정적입니다. 자세한 내용은 this post을 참조하십시오.