ios - 如何检查 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
如果不是有效路径,如何正确检查此处的返回值是否失败?
解决方案
在 SwiftfileURLWithPath
中返回一个非可选的,不能nil
请使用本机URL
而不是NSURL
let urlPathForScans = URL(fileURLWithPath: sDirIn)
您可以检查 URL 是否有效
if FileManager.default.fileExists(atPath: sDirIn) {
}
或者
let urlIsValid = (try? urlPathForScans.checkResourceIsReachable()) ?? false
推荐阅读
- javascript - 如何阻止函数在使用 Jquery 制作的计算器中运行
- assembly - x86 中调试寄存器的使用
- c# - 如果条件在 Jquery 中不起作用,为什么要使用 ViewBag?
- proxy - java webstart 应用程序 (jnlp) 的 SOCKs 代理设置
- php - 如何解决与 Jenssegers/Mongodb 相关的 Lumen 错误?
- node.js - Heroku 部署错误不允许 Discord.js 机器人在线出现 [NPM_CONFIG_LOGLEVEL=error]
- swift - AVAssetExportSession.exportAsynchronously 没有取得进展
- node.js - nodejs 编写一个程序,在指定时间执行对 HTTP 端点的调用
- python - 什么是仅读取文本文件中的完整单词的python代码(词法分析仅检测整个单词)?
- html - 当高度增加时,如何使文本垂直居中?