我正在使用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!
}


我可以在供稿页面上滚动,头像显示得很好。另外,当我将链接更改为黑色网页时,没有头像,但是我可以很好地滚动而不会出现此错误。知道这可能是什么吗?

最佳答案

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

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")
}

07-24 09:39
查看更多