Iphone screenshot https://i.stack.imgur.com/zQ06M.png
我正在尝试使我的textLabel和我的detailTextLabel显示两个不同的东西,但由于某种原因他们都说同样的事情。这里应该只有一个单元格,顶部标签显示数字2,底部标签显示; slakdfj(现在随机输入)。请参阅上面的链接以获取屏幕截图。
这是主要的vc:
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage
class ListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableViewProducts: UITableView!
var delegate: ListViewController?
var ref:DatabaseReference?
var databaseHandle: DatabaseHandle?
var postData = [productsList]()
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference().child("0")
loadProducts()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return postData.count
}
func loadProducts() {
ref?.observe(DataEventType.value, with: { (snapshot) in
var newSweets = [productsList]()
for post in snapshot.children {
let postObject = productsList(snapshot: post as! DataSnapshot)
newSweets.append(postObject)
print(self.postData)
}
self.postData = newSweets
self.tableViewProducts.reloadData()
}) { (error:Error) in
print(error)
}
}
//This places the text on the ViewControllerTableViewCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let sweet = postData[indexPath.row]
cell.textLabel?.text = sweet.id
cell.detailTextLabel?.text = sweet.p_name
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showDetails", sender: self)
}
}
这是结构:
导入基金会 导入UIKit 导入FirebaseDatabase
struct productsList {
let id: String!
let p_name: String!
init(id: String, p_name: String) {
self.id = id
self.p_name = p_name
}
init (snapshot:DataSnapshot) {
id = snapshot.value as! String
p_name = snapshot.value as! String
}
}
数据结构(现在非常基本):
[ {
"id" : "2",
"p_name" : ";slakdfj"
} ]
答案 0 :(得分:2)
在此处将相同的值设置为id和p_name。 这就是原因。
init (snapshot:DataSnapshot) {
id = snapshot.value as! String
p_name = snapshot.value as! String
}
您需要更改此代码:
init (snapshot:DataSnapshot) {
var dict = snapshot.value as! [String: AnyObject]
id = dict["id"] as! String
p_name = dict["p_name"] as! String
}
在这里,您需要更改“id”和“p_name”以适合您的firebase数据库。