首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Cocoa脚本桥创建iPhoto相册

使用Cocoa脚本桥创建iPhoto相册
EN

Stack Overflow用户
提问于 2010-05-10 20:35:42
回答 2查看 1.6K关注 0票数 1

为了从一个Cocoa应用程序创建一个新的相册,我拼命工作。在applescript中,这是一个很好的简单过程:

代码语言:javascript
复制
tell application "iPhoto"
    new album name "Album"
end tell

但是我不知道如何通过脚本桥在Cocoa中做到这一点。我试过了:

代码语言:javascript
复制
iPhotoApplication *iPhoto = [SBApplication applicationWithBundleIdentifier:@"com.apple.iPhoto"];
iPhotoAlbum *newAlbum = [[[[iPhoto classForScriptingClass:@"album"] alloc] initWithProperties:[NSDictionary dictionaryWithObject:@"Album" forKey:@"name"]] autorelease];
[[iPhoto albums] addObject:newAlbum];

但这并没有效果。

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-11 04:26:08

我没有费心去检查,但是我怀疑有a bug in,或者sdp或者Scripting Bridge,其中带有关键字参数的命令针对主application对象,sdp会给出一个方法名(例如-newAlbumName:),SB会给出一个不同的方法名(-newAlbum:name:)。由于您无法破解SB,因此您需要修补sdp生成的头部以使用后一种方法,并将nil作为第一个参数传递。

或者,您可以使用appscript,它比SB更强大,也更不容易出现应用程序兼容性问题。它还提供了更好的开发工具和支持。例如,通过附带的ASTranslate工具运行AppleScript会生成以下objc-appscript代码:

代码语言:javascript
复制
#import "IPGlue/IPGlue.h"
IPApplication *iphoto = [IPApplication applicationWithName: @"iPhoto"];
IPNewAlbumCommand *cmd = [[iphoto newAlbum] name: @"Test"];
id result = [cmd send];
票数 1
EN

Stack Overflow用户

发布于 2010-05-10 21:27:12

我曾经尝试使用Cocoa脚本桥,但没有成功。我的解决方法是使用NSAppleScript类:

代码语言:javascript
复制
NSString * scriptSource = [NSString stringWithFormat:
    @"tell application \"iPhoto\" to import from \"%@\"", path];

NSAppleScript * exportScript =
    [[NSAppleScript alloc] initWithSource:scriptSource];    

[exportScript compileAndReturnError:NULL];
[exportScript executeAndReturnError:NULL];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2802596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档