2010-06-16 8 views
0

Ok, donc j'ai une application, et je veux la rendre scriptable. J'ai mis en place le plist, j'ai mis en place le fichier sdef.faire une application scriptable Apple en Objective C, obtenir des erreurs bizarres

Jusqu'à présent, je n'ai qu'une seule commande d'événement apple: gotoPage. il faut un nombre entier. et retourne un booléen.

Le XML est pertinent:

<command name="gotoPage" code="dcvwgoto" description="Goto a specified page"> 
     <cocoa class="AEGoto"/> 
     <direct-parameter description="Page Number" type="integer"/> 
     <result description="True if the page exists, False othrewise" type="boolean"/> 
    </command> 

J'ai une classe Objective-C AEGoto.h:

@interface AEGoto :NSScriptCommand { 
} 
- (id)performDefaultImplementation; 


- (id)performDefaultImplementation 
{ 
    int page = [[self directParameter] intValue]; 
    Boolean retval = [gController setPage: page]; 
    return retval? @"YES" : @"NO"; 
} 

setPage: (int) est correct, et fonctionne très bien. Quand j'appelle cela, mon programme semble fonctionner correctement. Mais alors j'obtiens l'erreur:

erreur "DocView a une erreur: 4 ne comprend pas le message gotoPage." Numéro -1708 de 4

Je reçois aussi, dans ma sortie DocView:

Erreur lors de renvoyer le résultat d'une commande de script: l'objet de résultat ... OUI ... ne pouvait être converti en un événement d'Apple descripteur de type 'booléen'. Cette instance de la classe 'NSCFString' ne répond pas aux messages -scriptingBooleanDescriptor.

Cependant, si je reviens juste la Boolean droite, je reçois:

pas à pas unique jusqu'à la sortie de la fonction - [NSScriptingAppleEventHandler handleCommandEvent: withReplyEvent:], qui n'a pas d'informations de numéro de ligne. Signal reçu du programme: "EXC_BAD_ACCESS". Donc, je suppose que j'ai 2 questions: 1) Pourquoi pense-t-il qu'il veut dire 3 pour aller à une page? et 2) quelle est la bonne façon de renvoyer un booléen de l'applescript?

merci.

Répondre

2

return [NSNumber numberWithBool:retval];

+0

Donc, je suppose que je n'avais une question alors ... merci. –

+0

(Oups, j'ai sauté au fond de la question dans ma course.) – Wevah