を変更し、エラーを持っている何の添字のメンバーを持っていません修正されたタイプ 'Any'には添字のメンバー(firebase)はありませんが、クラッシュが発生します。タイプは「任意」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つ。 –
エラーは、3リットルのそれぞれにあった疑いines –