Заставить приложение Какао отвечать на простую команду AppleScript

Я пытаюсь добавить тривиальную поддержку AppleScript в приложение Какао. Приложение периодически выполняет проверку, и я просто хочу, чтобы оно выполняло ее по запросу.

Я пытаюсь следовать примеру Apple SimpleScriptingVerbs .

Я создал подклассы NSScriptCommand следующим образом:

Заголовок:

#import 

@interface rdrNotifierUpdateCommand : NSScriptCommand {

}
-(id)performDefaultImplementation;
@end

Реализация:

#import "rdrNotifierUpdateCommand.h"
#import "rdrNotifierAppDelegate.h"

@implementation rdrNotifierUpdateCommand

-(id)performDefaultImplementation {
  NSLog(@"Works at last");
  [((rdrNotifierAppDelegate *)[[NSApplication sharedApplication] delegate])
   checkForNewItems];  // This just fires the timer
  return nil;
}
@end

Мой файл .sdef выглядит следующим образом (и проблема, кажется, есть, но я не могу ее найти):




    
    
        
            
        
    

Info.plist настроен соответствующим образом.

Но когда я пытаюсь запустить следующий сценарий в редакторе AppleScript:

tell application "rdrNotifier"
    do update
end tell

Я получаю сообщение об ошибке, что переменная "update" не определена.

Я могу открыть словарь для своего приложения из редактора AppleScript (т.е. успешно зарегистрирован).

Изменить: найдено решение

Проблема действительно была в файле sdef : я не указывал, что приложение может отвечать на команду. Мое окончательное определение выглядит следующим образом (код Obj-C без изменений):




  
  
    
      
    
    
      
      
        
        
      
    
  

Любые улучшения / советы / критические замечания по-прежнему приветствуются. print_r ($ сообщений); Почему я его получил? Barii \ BlogBundle \ Entity \ Post Object ([id: Barii \ BlogBundle \ Entity \ Post: private] => 1 [title: ...

$posts = $em->find('Application\BlogBundle\Entity\Post',1);
print_r ($posts);

Почему я получил его?

Barii\BlogBundle\Entity\Post Object ( [id:Barii\BlogBundle\Entity\Post:private] => 1 [title:Application\BlogBundle\Entity\Post:private] => something [body:Application\BlogBundle\Entity\Post:private] => content  )

вместо простого массива вроде этого:

array ( [id] => 1,
        [title] => "something",            
        [body] => "content"  )

Я использую его с Symfony 2.

6
задан Ondrej Slinták 4 September 2011 в 19:59
поделиться