Як перетворити цей рядок var на URL у Swift


77

Мені потрібен URL- шлях до файлу URL (NSURL у старих версіях Swift). У мене є таке:

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()але це неправильно.

Відповіді:


171

вам потрібно зробити:

let fileUrl = URL(string: filePath)

або

let fileUrl = URL(fileURLWithPath: filePath)

залежно від ваших потреб. Див. URL-документи

До Swift 3 URL називався NSURL.


Swift 4: перший дає нуль, другий працює для таких шляхів, як "/dir/file.ext". Дякую!
William T. Mallard

1
Чому це так? Хтось знає?
Шаран Дуггірала,

14

У швидкому використанні 3:

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


1
дякую, це спрацювало для мене, раніше я використовував URL.init (fileURLWithPath: <# T ## String #>), який видавав неправильну URL-адресу. Я думаю, це для деякого шляху до файлу.
Раджат Корная,

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)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.