首页 > 解决方案 > 致命错误 - 使用 AWS S3 解包 Optional 时为零

问题描述

我正在使用像 instagram 这样的头像构建一个社交应用程序,并使用 Amazon S3 进行存储。出于某种原因,应用程序编译得很好,但是当我在上传头像后在搜索页面上滚动时,应用程序崩溃了,我收到了这个错误。

线程 1 - 致命错误 - 在展开可选值时意外发现 nil

这是出现错误的代码行...

private func avatarURL(for username: String) -> URL {
    return "https://s3.amazonaws.com/rest-of-link/\(username.lowercased())-avatar.jpg".URL!
}

我可以滚动显示头像的提要页面。此外,当我将链接更改为黑色网页时,没有头像,但我可以正常滚动而不会出现此错误。知道这可能是什么吗?

标签: swiftamazon-web-servicesamazon-s3optional

解决方案


看起来像!标记(强制展开)使您的应用程序崩溃。试试这个:

private func avatarURL(for username: String) -> URL? {
    return "https://s3.amazonaws.com/rest-of-link/\(username.lowercased().addingPercentEncoding(withAllowedCharacters: .urlPathAllowed))-avatar.jpg".URL
}

确保安全地打开 avatarURL(对于用户名:“someUsername”)。你可以这样做:

if let url = avatarURL(for username: "someUsername") {
     // set imageView.image here because URL is valid
} else {
    //maybe set imageView.image = nil
}

编辑:试试这个:

private func avatarURL(for username: String) -> URL? {
   let lowercase = username.lowercased()
   return URL(string: "https://s3.amazonaws.com/rest-of-link/\(lowercase)-avatar.jpg")
}

推荐阅读