模拟器和iOS设备tableView Firebase

我正在制作一个聊天室的应用程序。 现在每个聊天post都只能被发布的用户看到。 我如何使表视图永久,并为所有用户不仅看到当前用户。 像活饲料一样。

我需要在所有设备上显示的不仅仅是testing设备:

1

import UIKit import Foundation import Firebase import FirebaseDatabase import FirebaseStorage struct postStruct { let username : String! let message : String! let photoURL : String! } class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate { @IBOutlet weak var messageTextField: UITextField! var generalRoomDataArr = [postStruct]() @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 140 let ref = FIRDatabase.database().reference() let userID = FIRAuth.auth()?.currentUser?.uid ref.child("general_room").child("chat").child(userID!).queryOrderedByKey().observe(.childAdded, with: {snapshot in let snapDict = snapshot.value as? NSDictionary let username = snapDict?["Username"] as? String ?? "" let message = snapDict?["Message"] as? String ?? "" let firebaseUserPhotoURL = snapDict?["photo_url"] as? String ?? "" self.generalRoomDataArr.insert(postStruct(username: username, message: message, photoURL: firebaseUserPhotoURL), at: 0) self.tableView.reloadData() }) } @IBAction func backButtonPressed(_ sender: UIButton) { self.performSegue(withIdentifier: "BackToRoom", sender: nil) } //Message Send button is pressed data uploaded to firebase @IBAction func sendButtonPressed(_ sender: UIButton) { let message : String = self.messageTextField.text! UploadGeneralChatRoom(message: message) //upload to general_room self.messageTextField.text = nil messageTextField.resignFirstResponder()//Quit keyboard self.tableView.reloadData() //Reload tableView //UploadUserData() //Update Rank in database } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return generalRoomDataArr.count // your number of cell here } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell") let usernameLabel = cell?.viewWithTag(1) as! UILabel usernameLabel.text = generalRoomDataArr[indexPath.row].username let messageLabel = cell?.viewWithTag(2) as! UILabel messageLabel.numberOfLines=0 // line wrap messageLabel.lineBreakMode = NSLineBreakMode.byWordWrapping messageLabel.text = generalRoomDataArr[indexPath.row].message //initialize UI Profile Image let imageView = cell?.viewWithTag(3) as! UIImageView //Make Porfile Image Cirlce imageView.layer.cornerRadius = imageView.frame.size.width/2 imageView.clipsToBounds = true //User Profile image in tableview if generalRoomDataArr[indexPath.row].photoURL != nil { //let imageView = cell?.viewWithTag(3) as! UIImageView if let url = NSURL(string: generalRoomDataArr[indexPath.row].photoURL) { if let data = NSData(contentsOf: url as URL) { imageView.image = UIImage(data: data as Data) } } } // your cell coding return cell! } }//END CLASS 

试试这个代码 – Obj-C

 [[[self.reference child:@"general_room"] child:@"chat"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { if (snapshot.value != (id)[NSNull null]) { NSArray *value = [snapshot.value allValues]; NSLog(@"%@", [value valueForKey:@"Username"]); NSLog(@"%@", [value valueForKey:@"Message"]); NSLog(@"%@", [value valueForKey:@"photo_url"]); } } withCancelBlock:^(NSError * _Nonnull error) { NSLog(@"%@", error.localizedDescription); }]; 

迅速

检查与语法不知道有关迅速语法

  ref.child("general_room").child("chat").observeSingleEvent(of: .value, with: { (snapshot) in let value = snapshot.value as? NSArray for (dict in value) { let username = dict?["Username"] as? String let message = dict?["Message"] as? String let photo_url = dict?["photo_url"] as? String print(username) print(message) print(photo_url) } }) { (error) in print(error.localizedDescription) }}