2010-06-11 79 views
3

我正在編寫一個Cocoa應用程序,我想從使用Scripting Bridge的應用程序生成一個Numbers電子表格。我生成了Numbers.h文件,並按照Apple's Documentation中的說明鏈接了ScriptingBridge.framework。下面是我用來試圖簡單地創建Numbers文檔並保存它的代碼。如何使用objective-c創建Numbers電子表格?

NSString *path = @"/Users/username/Desktop/Test.numbers"; 

NumbersApplication *numbers = [SBApplication applicationWithBundleIdentifier:@"com.apple.iWork.Numbers"]; 

[numbers activate]; 

NumbersDocument *document = [[[numbers classForScriptingClass:@"document"] alloc] initWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:project.title, @"name", nil]]; 

[[numbers documents] addObject:document]; 

[document saveAs:nil in:[NSURL URLWithString:path]]; 

的代碼可以編譯和運行,當我嘗試另存爲:在:方法我收到以下錯誤:

- [SBProxyByClass的saveAs:在:]:對象沒有被添加到一個容器還;選擇器未識別[self = 0x2005912e0] ​​

除了將文檔添加到[numbers documents]數組之外,還有其他事項我必須做嗎?

我打算使用AppleScript,但如果可以的話,我寧願使用腳本橋。

回答

1

Ehh,用SB編寫數字腳本;兩個黑色藝術的價格之一。我建議首先嚐試在AppleScript中執行此操作,以便縮小問題的範圍。

如果它也發生故障,那麼您要麼錯誤地使用了這些命令,要麼在數字中存在問題。由於大多數應用程序腳本編寫者使用AppleScript,因此如果您能夠提供可識別的代碼,則會更容易獲得幫助。

如果有效,那麼您的命令轉換爲ObjC不正確或SB中存在問題。在AS中有一個工作示例將爲找出問題出在哪裏提供了一個起點。

您也可以查看objc-appscript,它爲SB提供了更可靠,更少混淆的替代方案。它的ASTranslate工具使得將工作的AS命令轉換爲ObjC語法變得很容易。

0

數字還不支持通過Applescript創建文檔。你必須使用GUI腳本。 Numbers的新版本應該在2011年1月6日發佈,並且(希望)能夠修復其嚴格限制的Applescript支持。

相關問題