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


77

我需要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()但这是不正确的。

Answers:


171

您需要执行以下操作:

let fileUrl = URL(string: filePath)

要么

let fileUrl = URL(fileURLWithPath: filePath)

根据您的需求。查看网址文档

在Swift 3之前,URL称为NSURL。


Swift 4:第一个为nil,第二个为“ /dir/file.ext”之类的路径。谢谢!
威廉·T·马拉德

1
为什么会这样呢?有人知道吗?
莎朗·杜吉拉拉

14

快速使用3:

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


1
谢谢,它为我工作,早先我使用的是URL.init(fileURLWithPath:<#T ## String#>),它产生了错误的url。我认为多数民众赞成在某些文件路径。
Rajath Kornaya

9

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


1
nil如果路径包含字符串,它将返回!使用let fileUrl = URL(fileURLWithPath: filePath)代替。
natevw

6

在swift 4中转换为url使用URL

let fileUrl = URL.init(fileURLWithPath: filePath)

要么

let fileUrl = URL(fileURLWithPath: filePath)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.