Sketch插件 - NSFileManager contentsOfDirectoryAtPath - 不是函数

时间:2016-08-26 22:20:36

标签: sketch-3 sketchapp cocoa-scripting cocoascript

我正在尝试为Sketch创建一个插件,允许我自动生成多语言资产。

现在,我选择一个启动流程的语言文件列表。我使用NSOpen Panel来选择这些。对于每个语言文件,它为该语言创建一个新页面,并查找带有特殊标记的文本图层,并将该副本替换为已翻译的副本。

虽然它正在执行此操作,但我希望检查另一个文件夹screenshots / lang中是否有任何屏幕截图,并存储这些图像的文件路径列表。这就是我现在陷入困境的地方。

目前我有:

var screenShotPaths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:mySourcePath error:NULL];

当我尝试在当前状态下在草图中运行插件时,控制台会说:

(Sketch Plugin)[6547]: TypeError: fileManager.contentsOfDirectoryAtPath_ is not a function. 
(In 'fileManager.contentsOfDirectoryAtPath_( mySourcePath)', 'fileManager.contentsOfDirectoryAtPath_' is undefined)

我试过看了很多我看到很多问题,列表没有返回,返回null等,但我找不到contentsOfDirectoryAtPath回来的任何东西,而不是一个函数。

这是因为它是一个由应用程序运行的插件并导航文件系统是一个安全问题?

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

这里的比赛有点晚了,但希望有人搜索这个会发现这很有用。

我发现你必须使用完整的方法:contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error(url,nil,nil,nil);

我对JS比较熟悉,所以我使用了js语法。希望其他人可以将此转换为Cocoa。

答案 1 :(得分:0)

Works for me: (Sketch 55)

var fileManager = [NSFileManager defaultManager];
var paths = [fileManager contentsOfDirectoryAtPath:filePath error:null];