Cocoa 可可粉中的错误Applescript结果
我在iTunes中有3首曲目,并运行以下过程:Cocoa 可可粉中的错误Applescript结果,cocoa,macos,applescript,Cocoa,Macos,Applescript,我在iTunes中有3首曲目,并运行以下过程: -(IBAction)reloadButtonClick:(id)sender; { NSAppleScript *script ; NSString *source ; NSString *result; NSDictionary *errorDic ; NSAppleEventDescriptor *ed; int total;
-(IBAction)reloadButtonClick:(id)sender;
{
NSAppleScript *script ;
NSString *source ;
NSString *result;
NSDictionary *errorDic ;
NSAppleEventDescriptor *ed;
int total;
source= @"tell application \"iTunes\" to get count of tracks of playlist 1";
script = [[NSAppleScript alloc] initWithSource:source];
ed = [script executeAndReturnError:&errorDic];
if (ed == nil)
{
NSAlert *alert = [[NSAlert alloc]init];
[alert setMessageText:@"Error Occurred"];
[alert runModal];
[alert release];
}
result = [ed stringValue];
total = [result intValue];
NSAlert *alert = [[NSAlert alloc]init];
[alert setMessageText:[NSString stringWithFormat:@"%d",total]];
[alert runModal];
[alert release];
}
它总是返回0,并且不会发生错误。但是,如果在脚本编辑器中执行脚本,它将返回3
有人知道怎么回事吗?AppleScript在可可粉中是否不稳定
谢谢
PS:我的iTunes版本是8.0.2(20)这一点看起来可疑;为什么不使用total=[ed intValue]:
result = [ed stringValue];
total = [result intValue];
我刚刚在一个基础工具中尝试了你的代码。我把它改了一点:
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSAppleScript *script ;
NSString *source ;
NSString *result;
NSDictionary *errorDic ;
NSAppleEventDescriptor *ed;
int total;
source= @"tell application \"iTunes\" to get count of tracks of playlist 1";
script = [[NSAppleScript alloc] initWithSource:source];
ed = [script executeAndReturnError:&errorDic];
if (ed == nil)
{
NSLog(@"Error Occurred");
}
result = [ed stringValue];
total = [result intValue];
NSLog( @"result: %d", total );
[pool drain];
return 0;
}
使用iTunes9.0.2(在Mac OS X 10.6.2上)。它工作得很好。它为我的第一个播放列表“Library”提供了正确的结果。很抱歉,各位,我错误地将变量total声明为double。这是一个全局变量。对于这个问题,我将total声明为localint,但没有尝试。再次抱歉。