继稍微过时的教程,并有错误时:类型“任何”无标会员火力地堡,然后导致崩溃改变
类型“任何”无标会员
let username = snapshot.value!["username"] as! String
let profileImageURL = snapshot.value!["profileImageURL"] as! String
let uid = snapshot.value!["uid"] as! String
我试着列出的类型'Any'没有下标成员(firebase),但它会导致崩溃。
我改变了代码以下的建议:
let username = (snapshot.value as? NSDictionary)?["username"] as? String
let profileImageURL = (snapshot.value as? NSDictionary)?["profileImageURL"] as? String
let uid = (snapshot.value as? NSDictionary)?["uid"] as? String
也:我已经通过几个相关问题搜索
if let test = snapshot.value! as? [String:Any]{
let username = test["username"] as? String
let profileImageURL = test["profileImageURL"] as? String
let uid = test["uid"] as? String
}
但是一切都只是导致系统崩溃。
全码:
import Foundation
import UIKit
import Firebase
import FirebaseStorage
import FirebaseDatabase
struct user {
let username : String!
let profileImageURL : String!
let uid : String!
}
class ProfileVC: UITableViewController {
var users = [user]()
override func viewDidLoad() {
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("Users").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
print("snapshot")
if let snapshots = snapshot.children.allobjects as? [FIRDataSnapshot] {
for snap in snapshots {
let username = snapshot.value!["username"] as! String
let profileImageURL = snapshot.value!["profileImageURL"] as! String
let uid = snapshot.value!["uid"] as! String
}
}
self.users.append(user(username: username, profileImageURL: profileImageURL, uid: uid))
self.tableView.reloadData()
})
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let imageView = cell?.viewWithTag(1) as! UIImageView
imageView.alpha = 0
let nameLbl = cell?.viewWithTag(2) as! UILabel
nameLbl.alpha = 0
nameLbl.text = users[indexPath.row].username
let imageData = try? Data(contentsOf: URL(string: self.users[indexPath.row].profileImageURL)!)
imageView.image = UIImage(data: imageData!)
nameLbl.text = self.users[indexPath.row].username
DispatchQueue.main.async(execute: {
UIView.animate(withDuration: 0.5, animations: {
imageView.alpha = 1
nameLbl.alpha = 1
})
})
return cell!
}
}
当时的错误在这条线?'让用户名= snapshot.value![“用户名”]作为!String'我怀疑这三种。 –
错误是在每一个3升ines –