#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 {