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
  • AMC类别:AMC类别照片

我将操作导入自动机,并将其添加到默认服务模板中。

输入模板中选择的选项有:

  1. 服务接收选定:URL
  2. 在:查找器
  3. 输入是:只有 URL

我的问题是当我尝试右键单击 finder 中的文件时,创建的服务没有出现。

任何人都可以建议我是否错过了什么?

4

2 回答 2

1

有时我会遇到我的服务没有显示的问题,因为我的服务太多了。尝试进入以下窗口并通过取消选中它们的复选框来禁用一些其他服务:

系统偏好设置 > 键盘 > 服务

如果您有任何要删除(或存档)的服务,您可以执行以下操作:

  1. 右键单击服务的名称
  2. 选择“在 Finder 中显示”
  3. 这将带你到 ~/Library/Services/

您可以删除服务或将它们移动到某个地方以进行安全保存。

- -编辑 - -

我一直在看这个。也许,可行的是在 Automator 中将服务的工作流输入指定为“文件和文件夹 > 图像文件”,而不是“文本 > URL”。

您必须在您的操作中调整您的 Objective-C 代码以使用路径名而不是使用 URL,但这是一个想法。

如果我的评论都不起作用,您可以发送电子邮件至: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 回答