Как проверить возвращаемое значение fileURL (withPath :) для сбоя? - PullRequest
1 голос
/ 13 января 2020

Я конвертирую некоторый код 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 не является допустимым путем?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

В Swift fileURLWithPath возвращает необязательный параметр, который не может быть nil

И, пожалуйста, используйте нативный URL вместо NSURL

let urlPathForScans = URL(fileURLWithPath: sDirIn)

Вы можете проверить, если URL действителен

if FileManager.default.fileExists(atPath: sDirIn) {

}

или

let urlIsValid = (try? urlPathForScans.checkResourceIsReachable()) ?? false
1 голос
/ 13 января 2020

Похоже, этот метод никогда не потерпит неудачу. Проверка в коде Objective- C является избыточной. Вам нужно будет выполнить проверку для nil позже при попытке извлечь файл через этот URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...