2013-08-27 1 views
0

J'essaye de créer un service d'automateur utilisant du cacao, qui créera simplement un fichier texte avec le nom des fichiers sélectionnés, sur le même chemin, pour lequel j'ai écrit le code ci-dessous :Cocoa + Automator: le service pour générer des fichiers texte ne fonctionne pas

- (id)runWithInput:(id)input fromAction:(AMAction *)anAction error:(NSDictionary **)errorInfo 
{ 
    // Add your code here, returning the data to be passed to the next action. 

    NSArray *fileURLs = (NSArray *)input; 

    size_t count = [fileURLs count]; 

    dispatch_apply(count, dispatch_get_global_queue(0, 0), ^(size_t i) { 
     NSURL *fileURL = [fileURLs objectAtIndex:i]; 

     NSData *data = [@"some crude text ;)" dataUsingEncoding:NSUTF8StringEncoding]; 

     //changing extension of file 
     NSString *filePathWithoutExtension = [[fileURL path] stringByDeletingPathExtension]; 
     NSString *filePathWithNewExtension = [[NSString alloc] initWithFormat:@"%@.%@",filePathWithoutExtension,@"txt"]; 

     [data writeToFile:filePathWithNewExtension atomically:NO]; 

    }); 

    // no need to return anything 
    return nil; 
} 

j'ajouté en dessous des valeurs dans le fichier Info.plist:

  • AMAccepts: Types: 0 article: com.apple.cocoa.url
  • AMCategory: AMCategoryPhotos

J'ai importé l'action dans l'automateur et l'ai ajoutée au modèle de service par défaut.

Les options sélectionnées dans le modèle d'entrée sont:

  1. Service reçoit sélectionnés: URL
  2. dans: Recherche
  3. entrée est: seulement URL

Mon problème est le service créé est n'apparaît pas lorsque j'essaie de faire un clic droit sur un fichier dans finder.

Quelqu'un peut-il suggérer si j'ai manqué quelque chose?

+0

Ainsi, le service ne figure pas dans le menu contextuel dans le Finder lorsque vous faites un clic droit sur un fichier . Votre service apparaît-il dans le menu Services du menu de l'application du Finder? – Kaydell

Répondre

1

Parfois, j'ai le problème de mes services n'apparaissent pas parce que j'ai tellement d'entre eux. Essayez d'entrer dans la fenêtre suivante et la désactivation de certains des autres services en décochant les cases correspondantes:

Préférences Système> Clavier> Services

Si vous avez des services que vous souhaitez supprimer (ou archives), vous pouvez faire les éléments suivants:

  1. Faites un clic droit sur le nom du service
  2. Choisissez "Afficher dans le Finder"
  3. Cela vous prendra à ~/Bibliothèque/services/

Vous pouvez supprimer les services ou les déplacer dans un endroit sûr.

--- --- Modifier

J'ai regardé ce un peu plus. Peut-être que ce qui fonctionnerait est de spécifier que l'entrée du flux de travail pour le Service, dans Automator, soit "Fichiers et Dossiers> Fichiers Image" au lieu d'être "URL Texte>".

Vous devrez ajuster votre code Objective-C dans votre action pour utiliser les noms de chemin au lieu d'utiliser des URL, mais c'est une idée.

Si aucun de mes commentaires ne fonctionne, vous pouvez m'envoyer un email à: [email protected] Je suis intéressé à en savoir plus sur Automator.

+0

thnx pour vos solutions proposées: -) ... Je vais essayer de vous le faire savoir. – Devarshi

0

Le service a travaillé après avoir changé ces options:

  1. Service reçoit sélectionné: URL
  2. dans: Recherche
  3. entrée est: seulement URL

à ces:

  1. Le service reçoit sélectionné: fichiers image
  2. dans: Recherche
  3. entrée est: (désactivé)

:-)

Questions connexes