我正在将一些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
NSURL.fileURL(withPath:)
的Swift文档没有以任何方式暗示返回值可能指示失败,尽管显然提供的path参数可能无效。如果sDirIn
不是有效路径,如何在此处正确检查返回值是否失败?
答案 0 :(得分:2)
在Swift <script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>
中返回一个非可选值,不能为fileURLWithPath
并且请使用本机nil
而不是URL
NSURL
您可以检查网址是否有效
let urlPathForScans = URL(fileURLWithPath: sDirIn)
或
if FileManager.default.fileExists(atPath: sDirIn) {
}
答案 1 :(得分:1)
似乎这种方法永远不会失败。在Objective-C代码中的检查是多余的。稍后尝试通过此URL提取文件时,需要对nil
进行检查。