如何在 Swift 中将此 var 字符串转换为 URL

Posted

技术标签:

【中文标题】如何在 Swift 中将此 var 字符串转换为 URL【英文标题】:How to convert this var string to URL in Swift 【发布时间】:2014-08-16 02:57:00 【问题描述】:

我需要 url 文件路径是 URL(旧版本 Swift 中的 NSURL)。我有这个:

let paths = NSSearchPathForDirectoriesInDomains(
        .documentDirectory, .userDomainMask, true)

// NSString *documentsDirectory = [paths objectAtIndex:0];
let documentsDirectory = paths[0] as String

var filePath:String? = nil
var fileNamePostfix = 0
repeat 
    filePath =
    "\(documentsDirectory)/\(dateTimePrefix)-\(fileNamePostfix).mp4"
    fileNamePostfix += 1
 while (FileManager.default.fileExists(atPath: filePath))

我需要将其转换为 URL 以便在 self.fileOutput.startRecording(to: <#outputFileURL: URL?#>, recordingDelegate: <#AVCaptureFileOutputRecordingDelegate?#>) 方法中使用。

我试过filePath as? URL(),但它不正确。

【问题讨论】:

【参考方案1】:

你需要做的:

let fileUrl = URL(string: filePath)

let fileUrl = URL(fileURLWithPath: filePath)

取决于您的需求。见URL docs

在 Swift 3 之前,URL 被称为 NSURL。

【讨论】:

Swift 4:第一个给出 nil,第二个适用于“/dir/file.ext”之类的路径。谢谢! 为什么会这样?有人知道吗?【参考方案2】:

在 swift 4 中使用 URL 转换为 url

let fileUrl = URL.init(fileURLWithPath: filePath)

let fileUrl = URL(fileURLWithPath: filePath)

【讨论】:

【参考方案3】:

在 swift 3 中使用:

let url = URL(string: "Whatever url you have(eg: https://google.com)")

【讨论】:

谢谢,它对我有用,之前我使用的是 URL.init(fileURLWithPath: ) ,它产生了错误的 url。我认为那是一些文件路径。【参考方案4】:

在 Swift3 中:let fileUrl = Foundation.URL(string: filePath)

【讨论】:

如果路径包含字符串,这将返回nil!请改用let fileUrl = URL(fileURLWithPath: filePath) @natev 如果 fileURL 字符串包含方案 "file://" 以及如果它是使用 absoluteString 而不是 path 属性获得的。【参考方案5】:

要将String中的文件路径转换为NSURL,请观察以下代码

var filePathUrl = NSURL.fileURLWithPath(path)

【讨论】:

请尽量简单解释一下。

以上是关于如何在 Swift 中将此 var 字符串转换为 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 NSURL 转换为字符串

如何在swift中将字符索引从layoutManager转换为String scale

在 Swift 3 中将 String 转换为 int

如何在 Swift 中将十六进制字符串转换为 CString?

如何在 Swift 中将 Int 转换为十六进制字符串

如何在swift(ios)中将字符串格式的日期转换为另一种字符串格式[重复]