Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 可可粉中的错误Applescript结果_Cocoa_Macos_Applescript - Fatal编程技术网

Cocoa 可可粉中的错误Applescript结果

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;

我在iTunes中有3首曲目,并运行以下过程:

   -(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,但没有尝试。再次抱歉。