Как мне выразить пустой URL-адрес в Swift 3?

#ios #swift #url #swift3 #nsurl

#iOS #swift #url #swift3 #nsurl

Вопрос:

У меня есть iOS проект. Я работаю над использованием Xcode 8 и сейчас Swift 3 . Прежде чем я начал конвертировать свой проект из Swift 2 последней версии, у меня в моем AppDelegate :

 func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {

    // Transfer incoming file to global variable to be read
    if url != "" {

        // Load from Mail App

        incomingFileTransfer = url

        incomingStatus = "Incoming"

    } else {

        // Regular Load

        print("App Delegate: No incoming file")

        incomingFileTransfer = nil

    }

    return true
}
  

Отлично сработало, и было бы видно, был ли открыт входящий файл типа PDF приложением. У меня есть файлы PDF, связанные с моим приложением, и я должен открывать их в своем приложении.

Я использовал инструмент миграции, чтобы помочь преобразовать мой код в новый Swift 3 код.

Он преобразовал мой код в AppDelegate и изменил его на:

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

    // Transfer incoming file to global variable to be read
    if url != "" {

        // Load from Mail App

        incomingFileTransfer = url

        incomingStatus = "Incoming"

    } else {

        // Regular Load

        print("App Delegate: No incoming file")

        incomingFileTransfer = nil

    }

    return true
}
  

Однако это выдает ошибку:

Двоичный оператор ‘!=’ не может быть применен к операндам типа ‘URL’ и ‘String’

Я понимаю, что «открытый URL», который был an NSURL , теперь является типом URL . Как мне теперь выразить пустой URL-адрес в Xcode 8 и Swift 3? Я посмотрел онлайн и ничего не могу найти по этому поводу?

Спасибо за помощь и советы.

Ответ №1:

Попробуйте использовать absoluteString свойство URL для сравнения, оно пустое.

 if url.absoluteString != "" {

}
else {

}
  

Примечание: если вы просто хотите проверить наличие пустого, тогда попробуйте использовать свойство в вашем случае, оно выглядит так isEmpty String if !url.absoluteString.isEmpty {