我正在試圖從Cocoa應用程序中創建一個新相冊。在AppleScript的這是一個不錯的簡單的程序:使用Cocoa Scripting Bridge創建iPhoto相冊
tell application "iPhoto"
new album name "Album"
end tell
但我不能工作如何,這是可可通過腳本橋完成。我已經試過這樣:
iPhotoApplication *iPhoto = [SBApplication applicationWithBundleIdentifier:@"com.apple.iPhoto"];
iPhotoAlbum *newAlbum = [[[[iPhoto classForScriptingClass:@"album"] alloc] initWithProperties:[NSDictionary dictionaryWithObject:@"Album" forKey:@"name"]] autorelease];
[[iPhoto albums] addObject:newAlbum];
但是沒有效果。
請幫忙!
感謝您的回覆。似乎sdp實際上已經生成了頭文件錯誤 - 可能是因爲「新專輯」不在類中。我會看看appscript是如何在幕後做的:D – robinjam 2010-05-10 22:25:00
iPhoto的字典設計不好,但是「新專輯」命令的結構和用法是完全有效的;同樣是iTune的「play」命令,這是另一個合理的例子。 sdp和SB根本不會將應用程序字典定義的命令以同樣的方式轉換爲ObjC方法。這是一個非常基本的錯誤。 – has 2010-05-11 18:26:39
Appscript非常模仿AppleScript的工作方式,進行調整以適應主機語言的功能。由於ObjC方法不執行可選參數,因此它使用一系列鏈式方法調用來創建命令('-newAlbum'),打包每個參數('-name:'),並最終發送它(「-send」) 。這與您使用原始Carbon C API('AECreateAppleEvent','AEPutParamDesc','AESendMessage')構建和發送Apple事件的方式非常相似,並且或多或少直接映射到這些調用。 – has 2010-05-11 18:32:48