0

ココアを使用して自動化サービスを作成しようとしています。これは、以下のコードを書いたのと同じパスに、選択したファイルの名前を持つテキスト ファイルを作成するだけです。

- (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;
}

info.plist ファイルに以下の値を追加しました。

  • AMAccepts: タイプ: アイテム 0: com.apple.cocoa.url
  • AMCategory:AMCategory写真

アクションを自動化ツールにインポートし、デフォルトのサービス テンプレートに追加しました。

入力テンプレートで選択されるオプションは次のとおりです。

  1. サービスが選択したものを受け取ります: URL
  2. に: ファインダー
  3. 入力: URLのみ

私の問題は、ファインダーでファイルを右クリックしようとすると、作成されたサービスが表示されないことです。

私が何かを逃した場合、誰かが提案できますか?

4

2 に答える 2

1

サービスが非常に多いために、サービスが表示されないという問題が時々発生します。次のウィンドウに移動し、チェックボックスをオフにして他のサービスの一部を無効にしてみてください。

システム環境設定 > キーボード > サービス

削除 (またはアーカイブ) したいサービスがある場合は、次の操作を実行できます。

  1. サービスの名前を右クリックします
  2. 「Finderに表示」を選択
  3. ~/Library/Services/ に移動します。

サービスを削除するか、安全な場所に移動することができます。

- -編集 - -

私はこれをもう少し見てきました。おそらく、Automator でサービスのワークフローの入力を「テキスト > URL」ではなく「ファイルとフォルダー > 画像ファイル」に指定するとうまくいくでしょう。

URL を使用する代わりにパス名を使用するには、アクションの Objective-C コードを調整する必要がありますが、これはアイデアです。

私のコメントがうまくいかない場合は、kaydell@yahoo.com までメールをお送りください。Automator についてもっと知りたいと思っています。

于 2013-08-27T15:30:47.250 に答える
0

これらのオプションを変更した後、サービスは機能しました。

  1. サービスが選択したものを受け取ります: URL
  2. に: ファインダー
  3. 入力: URLのみ

これらに:

  1. サービスが選択したものを受け取ります: 画像ファイル
  2. に: ファインダー
  3. 入力: (無効)

:-)

于 2013-08-28T01:56:59.010 に答える