ios - 如何制作个人资料屏幕
问题描述
我在注册后尝试制作用户个人资料
如何正确地将用户信息从 firebase 数据库上传到个人资料屏幕:
代码顶部
@IBOutlet weak var UsernameText: UILabel!
@IBOutlet weak var ProfileImage: UIImageView!
@IBOutlet weak var DisplayText: UILabel!
var DatabaseRef: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
DatabaseRef = Database.database().reference()
let userID = Auth.auth().currentUser ? .uid
DatabaseRef.child("users").child(userID!).observeSingleEvent( of: .value, with: {
(snapshot) in
// Get user value
let value = snapshot.value as ? NSDictionary
let username = value ? ["username"] as ? String ? ? "username"
let dict: Dictionary < AnyHashable, Any > ? = ["photo": "url of photo"]
if let profileImageUrl = dict ? ["photo"] as ? String,
let url = URL(string: profileImageUrl) {
URLSession.shared.dataTask(with: url) {
(data, response, error) in
DispatchQueue.main.async {
if let imageData = data {
self.ProfileImage.image = UIImage(data: imageData)
} else {
}
}
self.UsernameText.text = username
self.DisplayText.text = username
print(error ? .localizedDescription as Any)
return
解决方案
尝试这个
if let profileImageUrl = dict["photo"] as? String
并确保 profileImageUrl 是照片的实际 url
推荐阅读
- java - RestTemplate 测试时出现错误请求
- workfront-api - 如何在 Postman 中获取 Workfront 对象的所有字段?
- sql - 同一张表的迭代查询
- javascript - 如何获取用户输入并将其输出到网页上
- java - 如何使用 Java 获得 AzureRateCard?
- java - 如何在测试类中触发 XMLStreamException
- c# - 根据请求参数在运行时创建 EF Core DbContext
- asp.net-core - .Net Core 中的 SubreportProcessingEventArgs
- c++ - 如何在调整 QTableView 大小时动态更改列数?
- angular - 如何在 Angular 上使用 ngbDatePicker 插件禁用过去的日期