2010-07-14 7 views
1

J'écris du code dans AppleScript pour coller une application Obj-C Cocoa à d'autres choses. Je ne suis pas familier avec AppleScript sur l'apprentissage de Cocoa, donc bien sûr j'ai toutes sortes de bugs dans mon code pour travailler, et j'ai besoin d'au moins une connexion. Cependant, la sortie de la commande 'log' d'AppleScript ne semble pas se retrouver dans la console de débogage de XCode et l'appel de NSLog ne semble pas fonctionner. Est-il possible que je puisse envoyer la sortie à la console du débogueur à partir d'une méthode de classe AppleScriptObjC?Connexion AppleScriptObjC dans Xcode

(suggestion: nouvelle étiquette applescriptobjc sur ce Q - Je ne peux pas créer de nouvelles balises encore)

+0

Vous devez afficher le code que vous utilisez; différemment, il n'est pas possible de savoir ce que vous faites de mal, si quelque chose dans votre code doit être changé. – kiamlaluno

+0

Je posterai du code si la réponse de regulus6633 ne fonctionne pas. Je ne l'ai pas encore testé car juste après avoir posté cette question, j'ai découvert Scripting Bridge et je suis immédiatement passé à ça, car je suis bien plus à l'aise avec Objective-C qu'avec AppleScript. –

+0

C'est pourquoi je n'utilise pas applescriptobjc moi-même. Nous avons déjà le script de script et NSApplescript, donc je n'ai pas vu le besoin d'apprendre un autre ensemble de sytax. – regulus6633

Répondre

2

Je ne pas utiliser applescriptobjc, donc je ne suis pas sûr. Cependant, j'avais l'habitude d'utiliser Applescript Studio alors peut-être que mon expérience s'y applique. J'ai remarqué que vous ne pouvez pas avoir une instruction log (ou NSLog) à l'intérieur d'une application dire un bloc de code. Fondamentalement, si vous faites cela, alors vous dites à l'application de se connecter quelque chose et l'application ne connaît pas la commande de journal ... donc cela ne fonctionnerait pas. En tant que tel, vous devez obtenir vos relevés de journaux hors de l'application dites blocs ou utiliser dites-moi de vous connecter "quelque chose" dans le bloc tell ... qui dit essentiellement à applescript de faire la journalisation.

+0

Je ne suis pas sûr que ce soit entièrement correct. J'ai mis des instructions de log dans toutes sortes d'endroits et n'ai jamais eu de problème. S'il s'agit d'un problème, alors la commande log peut tout aussi bien être soustraite à un sous-programme (par exemple, comme ma réponse à la question de l'OP) qui supprime l'instruction tell actuelle. –

+1

Je l'ai testé et testé, cela fonctionne pour moi où les déclarations de log normales ne le font pas. –

2

Pas idéal car cela se connecte à la console et utilise le shell, mais cela devrait au moins vous obtenir quelque chose qui fonctionne:

log_entry("Hello, World!") 

on log_entry(theLine) 
    do shell script "echo " & theLine & " >> ~/Library/Logs/AppleScript-events.log" 
end log_entry