2010-01-15 2 views
0

У меня есть 3 дорожки в ITunes и запустить эту процедуру:Ложные результат Applescript в какао

-(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)

+0

Прошу прощения, я ошибочно заявил, что переменная сумма равна удвоенной. Это была глобальная переменная. Я объявлял итогом как локальный int для этого вопроса, но не пробовал. Еще раз извините. – Irwan

+0

Работает нормально. – Irwan

ответ

0

Этот бит выглядит подозреваемого; почему вы не используете total = [ed intValue]:

result = [ed stringValue]; 
    total = [result intValue]; 
0

Я просто попробовал свой код в фундаменте. Я немного изменил его:

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; 
} 

С iTunes 9.0.2 (на Mac OS X 10.6.2). Он работал нормально. Это дало мне правильный результат для моего первого плейлиста «Библиотека».

Смежные вопросы