Search code examples
iosswiftdatabaserealm

How to get the name list on Realm database and display on my stimulator?


Here I have a Realm Database which is have some data in it and I want to display it on my Stimulator but it turn out display some other thing. What's wrong in my code?

This is the data of my Realm Database and I also marked the data which I want to display it.

enter image description here

The stimulator which display something like this.

enter image description here

And here is my ViewController.swift code's.

import UIKit
import RealmSwift

class ViewController: UIViewController,UITableViewDataSource  { //UITableViewDataSource

    @IBOutlet weak var mytableview: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        let realm = try! Realm()
         let theItem = realm.objects(Item.self).filter("itemid >= 1")
         return theItem.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let realm = try! Realm()
        let theItem = realm.objects(Item.self).filter("itemid >= 1")
        print(theItem)

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell1")
        //I suspect the problem is at here...
        cell?.textLabel?.text = "\(theItem)"
        return cell!

    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

}

class Category: Object {
    @objc dynamic var name: String?
    @objc dynamic var caid: Int = 0
}

class Item: Object {
    @objc dynamic var name: String?
    @objc dynamic var itemid: Int = 0
    @objc dynamic var cateid: Int = 0
}

Solution

  • I found a way to display the data already. I just need to add indexPath.row in my code and it can handle the data already.

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let realm = try! Realm()
        let theItem = realm.objects(Item.self).filter("itemid >= 1")
        //I only add below this indexpath
        let cellData = theItem[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell1")
        //and change this part and it's done.
        cell?.textLabel?.text = cellData.name
        print(theItem)
        return cell!
    }
    

    enter image description here