首页 > 解决方案 > 如何检查 fileURL(withPath:) 的返回值是否失败?

问题描述

我正在将一些 Objective-C 代码转换为 Swift。Objective-C 看起来像:

NSURL *urlPathForScans = [NSURL fileURLWithPath:sDirIn];
if (nil != urlPathForScans) { 
    // some code…

我已经将该代码转换为:

var urlPathForScans = NSURL.fileURL(withPath: sDirIn)
if urlPathForScans != nil  {
    // some code …

这在我构建时给了我以下警告:

将“URL”类型的非可选值与“nil”进行比较总是返回 true

Swift 文档NSURL.fileURL(withPath:)不以任何方式暗示返回值可能表示失败,即使显然提供的路径参数可能无效。sDirIn如果不是有效路径,如何正确检查此处的返回值是否失败?

标签: iosswiftreturn-valuefilepath

解决方案


在 SwiftfileURLWithPath中返回一个非可选的,不能nil

请使用本机URL而不是NSURL

let urlPathForScans = URL(fileURLWithPath: sDirIn)

您可以检查 URL 是否有效

if FileManager.default.fileExists(atPath: sDirIn) {

}

或者

let urlIsValid = (try? urlPathForScans.checkResourceIsReachable()) ?? false

推荐阅读