我正在尝试使用 cocoa 创建一个自动化服务,它将简单地创建一个文本文件,其名称与所选文件的名称相同,路径相同,我为此编写了以下代码:
- (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 文件中添加了以下值:
我将操作导入到自动化程序中,并将其添加到默认服务模板中。
输入模板中选择的选项有:
我的问题是当我尝试右键单击查找器中的文件时,创建的服务没有出现。
如果我错过了什么,有人可以建议吗?
有时我会遇到我的服务未显示的问题,因为我的服务太多了。尝试进入以下窗口并通过取消选中某些其他服务的复选框来禁用它们:
系统偏好设置 > 键盘 > 服务
如果您有任何想要删除(或存档)的服务,您可以执行以下操作:
您可以删除服务或将它们移动到安全的地方。
---编辑---
我一直在关注这个。也许,有效的方法是在 Automator 中将服务工作流程的输入指定为“文件和文件夹 > 图像文件”,而不是“文本 > URL”。
您必须在操作中调整 Objective-C 代码以使用路径名而不是 URL,但这是一个想法。
在我更改这些选项后,该服务开始工作:
致这些: