Swift 失败时返回空URL

Swift 失败时返回空URL,swift,return,closures,Swift,Return,Closures,在这样的函数中: func getMessageDetails()->URL{ if let theLinks = theMessage.links as? [[String:String]]{ let thisLink = theLinks[3]["Href"] let url = URL(string: thisLink) return url! } return

在这样的函数中:

func getMessageDetails()->URL{

        if let theLinks = theMessage.links as? [[String:String]]{
            let thisLink = theLinks[3]["Href"]
            let url = URL(string: thisLink)
            return url!
        }
        return nil// is unacceptable, what should I put here?
    }

在闭包之外我应该返回什么?

在这种情况下,最好的解决方案是返回可选的URL,如果链接不是有效的URL,它也可以处理这种情况。您应该检查
thisLink
数组是否包含超过3项,以避免出现超出范围的异常:

func getMessageDetails() -> URL? {

    if let theLinks = theMessage.links as? [[String:String]], 
        theLinks.count > 3,
        let thisLink = theLinks[3]["Href"] {
        return URL(string: thisLink)
    }
    return nil
}