gpt4 book ai didi

ios - 在 Swift 中使用 NSFileManager 删除文件时无法获得完成结果

转载 作者:行者123 更新时间:2023-11-28 08:49:38 25 4
gpt4 key购买 nike

我正在尝试删除用户录制的视频,现在已决定删除。我有一个文件 URL,然后显然还有一个路径。

我已经尝试对文件和路径使用 NSFileManager 类的删除方法,但是我无法获得完成结果来确认文件是否真的被删除了.

这是我如何尝试在 Swift 中删除文件的示例:

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

这会给我一个警告:Constant 'deleted' inferred to have type '()', which may be unexpected

使用 removeItemAtPath 会产生相同的警告。如果我运行代码,deleted 只是记录为 ()

如果我查看这两个方法的方法签名,很明显它们不会返回结果,但以 removeItemAtURL 方法的文档为例:如果项目是成功删除或 URL 为零。如果发生错误,则返回 false。如果委托(delegate)中止对文件的操作,则此方法返回 true。但是,如果委托(delegate)中止对目录的操作,则此方法返回 false。

它还提到采用 error 参数但没有。然后最后在最后一句话中说:如果项目已成功删除或 URL 为 nil,则返回 YES。

作为最后的手段,我认为我可以成为 NSFileManager 的委托(delegate),但它的委托(delegate)协议(protocol)不提供任何完成方法。

如何正确删除文件或路径,然后验证它是否确实已被删除?

最佳答案

你是对的,在 Swift 中它返回 Void(我相信文档包括当你打开 Objective-C 或两者时的返回值描述,而不仅仅是 Swift —— 他们更新文档有很多工作要做)。

如果您继续阅读该函数的文档,您会看到标题为“Handling Errors in Swift”的部分,其中说:

In Swift, this method returns Void and is marked with the throws keyword to indicate that it throws an error in cases of failure.

You call this method in a try expression and handle any errors in the catch clauses of a do statement, as described in Error Handling in The Swift Programming Language (Swift 2.1) and Error Handling in Using Swift with Cocoa and Objective-C (Swift 2.1).

因此,将您的调用包装在 try/catch 中,并在出现错误时处理错误。如果没有错误,它就成功了。

关于ios - 在 Swift 中使用 NSFileManager 删除文件时无法获得完成结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com