2017-05-05 64 views
-1

我發佈了一個Sketch插件,其中包含一些強大的文件管理依賴功能。Sketch插件中NSFileManager的意外響應

執行時,插件需要檢查文件夾是否存在,如果不存在,創建並管理該目錄中的多個文件。

幾個星期前,一個用戶報告的插件崩潰在一個新的草圖版本。

意外的響應:

  • fileExistsAtPath返回該路徑
  • createDirectoryAtPath回報「錯誤」試圖創建一個不存在的文件夾時(我已經測試確實存在時-folder不exist-既當文件夾存在,而不是)

簡單的例子:

請求

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 

任何想法?

謝謝!

回答

1

你的文件路徑的根源並非是(不以/開始)

+0

固定/開頭,但很奇怪...插件是之前並且沒有 – laresgoiti

+0

感謝傑夫·萊恩工作測試! – laresgoiti

+0

在Xcode中測試並不總是會揭示這類問題。您的應用程序從文件系統中的其他目錄開始。 –