swift - 致命错误 - 使用 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!
}
我可以滚动显示头像的提要页面。此外,当我将链接更改为黑色网页时,没有头像,但我可以正常滚动而不会出现此错误。知道这可能是什么吗?
解决方案
看起来像!标记(强制展开)使您的应用程序崩溃。试试这个:
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")
}
推荐阅读
- ios - 弹出时如何显示带有动画的标签栏?(iPhone X)
- google-app-engine - 如何在 Google 应用引擎中增加 client_max_body_size?
- liquibase - Liquibase:无法识别数据类型 CLOB
- c - 使用链表将两个多项式相乘的程序
- json - 使用复制命令将 Json 文件加载到 redshift
- javascript - 使用 echarts 图表继续强调点击
- javascript - Redux Thunk 用于简单的异步请求
- acumatica - 为什么在插入和更新新行时出现重复行?
- java - Git - 将存储库推送到heroku失败(java应用程序)
- javascript - forEach() 方法的估计完成时间