Какао SBridge: как получить возвращаемое значение (сложный тип) AppleScript - PullRequest
0 голосов
/ 05 августа 2010

Я пытаюсь с одного месяца создать приложение, которое обнаруживает текущую дорожку iTunes, чтобы пометить песню и рассчитать удары в минуту (через нажатие кнопки)

Когда пользователь изменяет одно из полей тега, трек блокируется в приложении: это означает, что при изменении iTunes currentTrack мое приложение остается на предыдущем треке.

Моя проблема: у меня есть постоянный идентификатор предыдущего трека. Я создал appleScript, чтобы получить трек, соответствующий этому постоянному идентификатору. Но я не нахожу, как получить этот трек в какао-части приложения !!!!

вот скрипт:

on open param
    tell application "iTunes"
        set trackItems to (every track of playlist "Library" whose persistent ID is param)
        repeat with aTrack in trackItems
            return aTrack
        end repeat
        return null
    end tell
end open

На стороне какао,

NSAppleEventDescriptor *desc = [findTrackWithPersistentIDScript runWithParameters: [NSArray arrayWithObjects: lockPersistentID ,nil]];

что я могу сделать с NSAppleEventDescriptor? Я хотел бы иметь iTunesTrack или iTunesFileTrack. В диалоговом окне дисплея я проверяю, что трек хорошо найден

Спасибо за чтение и за помощь!

PS: когда я отлаживаюсь, если я делаю [desc data], у меня есть NSContreteData и ниже iTunesItem. Но я не знаю, как получить этот iTunesItem (я пробовал кастинг ...), и мне удалось его получить, что я могу с ним сделать, чтобы иметь iTunesTrack.

1 Ответ

0 голосов
/ 09 августа 2010

Легко конвертировать строки назад и вперед между applecript и obj-c.Таким образом, мое предложение было бы передавать только строки вперед и назад.Например, вы ничего не можете сделать с «дорожкой» в какао, так что не передавайте это назад, потому что она вам все равно не нужна.Вместо этого верните название трека.Или верните постоянный идентификатор в виде текста.Или передайте обратно «true», означающее, что вы нашли его, или «false», означающее, что вы не смогли его найти.

Затем в какао, чтобы получить NSString результата applecript, просто используйте [result stringValue].

...