斯威夫特什么回来而不是零?

时间:2017-01-16 21:14:45

标签: swift image null

我知道,你不能在Swift中返回nil 我可以用什么呢?

我有以下代码:

public func getImageFromFilename(name: String) -> UIImage {
    print(name)
    var img: UIImage?
    img = UIImage(named: name + ".jpg")
    if (img == nil) {
        img = UIImage(named: name + ".png")
    }
    return img!
}

如果文件不存在,则此代码不起作用。我能回头看看它是否成功? 如果图像存在,我想返回图像,否则我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

有两种选择。您可以将UIImage?返回到nil,因为返回的结果表明文件的加载不成功,或者您返回UIImage但是如果方法throw出错则加载文件失败。

选项UIImage?

public func getImageFromFilename(name: String) -> UIImage? {
    print(name)

    if let img = UIImage(named: name + ".jpg") {
        return img
    }

    if let img = UIImage(named: name + ".png") {
        return img
    }

    return nil
}

投掷选项:

public func getImageFromFilename(name: String) throws -> UIImage {
    print(name)

    if let img = UIImage(named: name + ".jpg") {
        return img
    }

    if let img = UIImage(named: name + ".png") {
        return img
    }

    throw YourErrorType.failedToLoadImage(name)
}