【问题标题】:My textlabel and detailtextLabel display the same text我的 textlabel 和 detailtextLabel 显示相同的文本
【发布时间】:2018-04-07 15:20:58
【问题描述】:

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 导入 Firebase 数据库

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"
} ]

【问题讨论】:

    标签: json swift firebase uilabel


    【解决方案1】:

    在这里,您将相同的值设置为 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 数据库。

    【讨论】:

    • 好的,现在我在 var dict = snapshot.value as 处收到 SIGBART 错误! [字符串:AnyObject]
    • 请分享您的数据库结构。
    • 结构更新
    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多