2015-12-30 14 views
1

我試圖刪除用戶錄製的視頻,現在已決定刪除該視頻。我有一個文件的URL,然後顯然也是一個路徑。在Swift中使用NSFileManager刪除文件時無法獲得完成結果

我已經嘗試使用文件和路徑的NSFileManager類的刪除方法,但我無法獲得完成結果以確認文件是否實際上已被刪除。

下面是如何我試圖刪除文件在斯威夫特的例子:

let deleted = try! NSFileManager.defaultManager().removeItemAtURL(self.fileURL) 

這會給我的Constant 'deleted' inferred to have type '()', which may be unexpected

使用removeItemAtPath產生同樣的警告的警告。如果我運行的代碼,deleted只需登錄爲()

如果我看的這兩種方法很明顯,他們不返回結果的方法簽名,而是採取例如爲removeItemAtURL方法的文檔:true if the item was removed successfully or if URL was nil. Returns false if an error occurred. If the delegate aborts the operation for a file, this method returns true. However, if the delegate aborts the operation for a directory, this method returns false.

它也提到了參數error,但沒有。然後最後在最後一句話中說:Returns YES if the item was removed successfully or if URL was nil.

作爲最後的手段我想我可以成爲NSFileManager的代表,但它是委託協議不提供任何完成方法。

如何正確刪除文件或路徑,然後驗證它是否已被刪除?

回答

0

你說得對,在Swift中它返回Void(我相信文檔包含返回值描述,當你有Objective-C或Both開啓時,與Swift相反 - 它們有很多工作來更新文檔)。

如果您繼續閱讀文檔該功能,你會看到一個標題爲「處理錯誤的雨燕」一節,其中說:

在斯威夫特,這個方法返回void,並標有投 關鍵字來表明它在失敗的情況下拋出一個錯誤。

您撥打一個嘗試表達這個方法,在做陳述的 catch子句處理任何錯誤,在錯誤處理的 斯威夫特編程語言(雨燕2.1)和錯誤描述的處理中使用 斯威夫特與可可和Objective-C(Swift 2.1)。

因此,將您的呼叫打包在try/catch中,並在出現錯誤時處理該錯誤。如果沒有錯誤,它就成功了。

+0

「他們有很多工作要做更新文檔」 - 是的:) – user3344977