TableView不显示来自Realm的数据

时间:2018-08-24 20:32:14

标签: ios swift realm tableview cell

我有一个问题:我的tableView没有显示来自领域数据库的任何数据。但是我想问题出在单元格中。

class ClientViewController: UITableViewController {

    @IBOutlet var table: UITableView!
    var clientsInfo: Results<Client> {
        get {
            return realm.objects(Client.self)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
        table.delegate = self
        table.dataSource = self
        table.reloadData()
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: myCell.reuseIdentifier, for: indexPath) as! myCell
        let info=clientsInfo[indexPath.row]
        cell.todoLabel.text = info.firstName
        return cell

    }
}

class myCell: UITableViewCell {
    @IBOutlet weak var label: UILabel!

    static let reuseIdentifier = "cell"


    @IBOutlet weak var todoLabel: UILabel!

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

    }
} 

2 个答案:

答案 0 :(得分:1)

您的代码中有些错误,

第一

您使用的是UITableViewController,默认情况下它已经有一个tableView,因此您无需像以前一样声明新的tableView

@IBOutlet var table: UITableView!

第二:

在viewDidLoad中,您正在为默认的tableView注册单元格,并将声明的表用于dataSource和委托,这将不起作用。我建议您删除创建的表并使用默认表,以便您的viewDidLoad如下所示:

override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
        self.tableView.delegate = self
        self.tableView.dataSource = self
    }

和第三名:

您缺少的实现:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

答案 1 :(得分:0)

在此代码中,您忘记了实现tableView(numberOfRowsInSection:)方法,因此默认情况下它返回0,并且从未调用过您的tableview(cellForRowAt:)方法。

AND

也许这与您的问题无关,

您在UITableView中使用了UITableView变量(名称为 )。这是不必要的,因为UITableView已经具有UITableView(名称为 tableView )。并且您已经将单元格注册到 tableView 中,但是似乎您试图从 table 出队。