如何在 Swift 3 中表达一个空的 URL?

How do I express an empty URL in Swift 3?

我有一个 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
}

但是它给出了错误:

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

我理解 'open url' 是一个 NSURL 现在是一个类型 URL。现在如何在Xcode8和Swift3中表达一个空的URL?我上网查了一下,找不到任何相关信息?

感谢您的帮助和建议。

尝试用URLabsoluteString属性来比较是否为空。

if url.absoluteString != "" {

}
else {

}

注意:如果你只是想检查是否为空,那么连击使用isEmpty 属性 of String 在你的情况下它看起来像 if !url.absoluteString.isEmpty {