失败时返回空URL

时间:2017-11-24 18:32:02

标签: 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 nil// is unacceptable, what should I put here?
    }

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

1 个答案:

答案 0 :(得分:0)

在这种情况下,最好的解决方案是返回一个可选的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
}