2016-10-04 7 views
1

У меня есть проект iOS. Я работаю над использованием Xcode 8 и теперь Swift 3. До того как я начал преобразование мой проект от Swift 2 до последней, у меня был следующий в моем AppDelegate:Как выразить пустой URL в Swift 3?

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 
} 

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

Binary operator '!=' cannot be applied to operands of type 'URL' and 'String'

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

Благодарим за помощь и совет.

ответ

2

Попробуйте использовать absoluteString property of URL, чтобы сравнить.

if url.absoluteString != "" { 

} 
else { 

} 

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