2010-01-11 3 views
1
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init] ; 

NSAppleEventDescriptor *eventDescriptor; 
NSAppleScript *script ; 
NSString* source ; 
NSDictionary* errorDic ; 

[email protected]"tell application \"iTunes\" \n" 
@"set tname to name of track 1 of playlist 1 \n" 
@"set tartist to artist of track 1 of playlist 1 \n" 
@"set talbum to album of track 1 of playlist 1 \n" 
@"set ttime to time of track 1 of playlist 1 \n" 
@"set tbitrate to bit rate of track 1 of playlist 1 \n" 
@"set tsize to size of track 1 of playlist 1 \n" 
@"set trating to rating of track 1 of playlist 1 \n" 
@"end tell"; 

script = [[NSAppleScript alloc] initWithSource:source]; 
eventDescriptor = [script executeAndReturnError:&errorDic]; 
NSString* frontUrl = [eventDescriptor stringValue]; 
NSLog(frontUrl); 

/*NSAlert *alert = [[NSAlert alloc]init]; 
[alert setMessageText:frontUrl]; 
[alert runModal]; 
[alert release];*/ 

[pool release] ; 

NSlog отображает только рейтинг треков. Как получить значение tname, tartist, talbum и т. Д.?Как получить переменную ценность applescript в какао?

Заранее спасибо

ответ

1

Applescript возвращает значение последнего выполненного оператора. В этом случае это trating. Поместите оператор в конце, который содержит все значения (например, список).

+0

Я попытался изменить к Телль приложения "ITunes" \t множества MyData, чтобы получить {постоянный ID, имя, исполнитель, альбом} трека 1 плейлиста 1 \t получить MyData конец сказать но результат равен нулю – Irwan

+1

Просто верните '{tname, tartist, talbum, ttime, tbitrate, tsize, trating}'. Как только вы начнете работать, вы можете попробовать вернуться и обработать запись вместо списка, чтобы вы не полагались на индексы, соглашающиеся между кодом AppleScript и кодом Cocoa. –

+0

Спасибо, Питер! работает – Irwan

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