【问题标题】:Unexpected response from NSFileManager in Sketch PluginSketch 插件中 NSFileManager 的意外响应
【发布时间】:2026-01-13 00:30:01
【问题描述】:

我发布了一个 Sketch 插件,其中一些功能对文件管理有很强的依赖性。

插件在执行时需要检查一个文件夹是否存在,如果不存在,则创建并管理该目录下的几个文件。

几周前,一位用户报告说插件在新的 Sketch 版本中崩溃了。

来自以下方面的意外响应:

  • fileExistsAtPath return - 文件夹不存在 - 当实际存在于该路径中时
  • createDirectoryAtPath 在尝试创建不存在的文件夹时返回“错误”(我已经测试过文件夹是否存在)

快速示例:

请求

var document = context.document
var documentName = document.displayName()
var documentFolderPath = decodeURIComponent(document.fileURL()).replace('file:///','').replace(documentName,"")

print(documentName)
print(documentFolderPath)

var translationsFolderName = documentName.replace('.sketch','_translations')
var translationsFolderPath = documentFolderPath+translationsFolderName+'/'

print(translationsFolderName)
print(translationsFolderPath)

var fileManager = [NSFileManager defaultManager];

if(![fileManager fileExistsAtPath:translationsFolderPath isDirectory:'YES'])
{
   print(translationsFolderPath+" folder does not exist")
   if(![fileManager createDirectoryAtPath:translationsFolderPath withIntermediateDirectories:'YES' attributes:nil error:nil])
    {
       print(translationsFolderPath+" folder can't be created")
    }
}

回应

test.sketch
Users/myuser/Documents/
test_translations
Users/myuser/Documents/test_translations/
Users/myuser/Documents/test_translations/ folder does not exist
Users/myuser/Documents/test_translations/ folder can't be created

Script executed in 0.034733s

有什么想法吗?

谢谢!

【问题讨论】:

    标签: cocoa plugins sketch-3


    【解决方案1】:

    你的文件路径没有root(不以/开头)

    【讨论】:

    • 在开头用 / 固定,但很奇怪...插件之前测试过,没有那个也可以工作
    • 在 Xcode 中进行测试并不总是会发现这类问题。您的应用在文件系统中的不同目录中启动。