UITableView not displaying the correct number of sections and rows from the fetch request array result

人盡茶涼 提交于 2019-12-25 08:36:42

问题


I think my problem spans over multiple VC. In the table VC I perform a fetch request that returns an array of Floor objects. This entity has 2 attributes (floor number and number of rooms in floors). If I assign 2 floors (0 and 1) it works and prints them. The next VC contains a picker that displays the number of floors and a text box that is used to assign the number of rooms per floor. There must be a problem with this function because it gets called only if the first item of the picker is selected (prints the result). If I have 2 floors (0 and 1 in the picker) and floor 1 is selected the function does not assign the room value to any other floor. It doesn't matter how many floors, the function will only work for the first one. I have looked of how to modify the function but did not find any suitable solutions. The second problem is that the table view does only display one row. Lets say that for floor 0 I assign 1; than only a row with 1 appears. If anyone could help me it would mean a lot to me. Thank you Please see the code below for the picker function:

 @IBAction func setTheFloors(_ sender: UIButton) {
    if storedFloors.count > 0 {
        if storedFloors.first?.floorNumber == pickedFloor! {
            storedFloors.first?.numberOfRooms = roomNumberValue
            print("\(storedFloors.first?.floorNumber) + \(storedFloors.first?.numberOfRooms)")
        }
    }
    do {
        try managedObjectContext.save()
    } catch {
        fatalError("could not save context because: \(error)")
    }

}


@IBAction func nextStep(_ sender: UIButton) {

}

private func loadFloorData() {
    let floorRequest: NSFetchRequest<Floors> = Floors.fetchRequest()
    do {
        storedFloors = try managedObjectContext.fetch(floorRequest)
    } catch {
        print("could not load data from core \(error.localizedDescription)")
    }
}

private func spinnerItems() {
    for i in 0...floorValue! - 1 {
        convertedFloorValues.append(String(i))
    }
}

and this section of code is for the table view.

class RoomAndAlarmTypeTableVC: UITableViewController, NSFetchedResultsControllerDelegate {

//MARK: - Properties

private var managedObjectContext: NSManagedObjectContext!

private var storedFloors = [Floors]()

private var floorsAndRooms = [String: String]()

//MARK: - Actions

override func viewDidLoad() {
    super.viewDidLoad()
    managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    loadFloorData()
    tableView.delegate = self
    tableView.dataSource = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

private func loadFloorData() {
    let floorRequest: NSFetchRequest<Floors> = Floors.fetchRequest()
    do {
        storedFloors = try managedObjectContext.fetch(floorRequest)
        print("\(storedFloors)")

    } catch {
        print("could not load data from core \(error.localizedDescription)")
    }
}



// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    return storedFloors.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let specificFloor = storedFloors[section]
    return Int(specificFloor.numberOfRooms)
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "house cell", for: indexPath) as! ViewRooomNumberCell
    let tableSections = storedFloors[indexPath.section]
    let floorItem = tableSections.numberOfRooms[indexPath.row]
    let floorNumber = String(floorItem.numberOfRooms)
    cell.floorNumberTxt.text = floorNumber
    return cell
}

}

来源:https://stackoverflow.com/questions/43018513/uitableview-not-displaying-the-correct-number-of-sections-and-rows-from-the-fetc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!