Ich bin über das Einrichten einer Tabellenansicht mit einer Anzahl von Abschnitten auf der Grundlage eines Entitätsattributs und der Zahl gestolpert. von Zellen basierend auf einem anderen Attribut derselben Entität. Ich habe eine Entity namens Floors (mehr als eine Instanz kann existieren) und dies hat 2 Attribute: Etagennummer und Anzahl der Zimmer auf der Etage. Ich habe eine Abrufanforderung ausgeführt und das Array zurückgegeben. Mein Wissen ist nicht gut genug, um herauszufinden, wie man ein Wörterbuch wie folgt aufstellt: [floorNumber: numberOfRoomsInFloor] damit ich es nehmen und die Anzahl der Abschnitte in der Tabelle und die Anzahl der Zeilen in jedem Abschnitt definieren kann. Ich habe es versucht und gescheitert, und ich habe Threads auf der Site angeschaut, aber ich sehe nicht wirklich eine Lösung, die für mich funktionieren könnte. Wenn sich jemand etwas Zeit nehmen und mir helfen könnte, würde es mir viel bedeuten. Bitte haben Sie einen Blick auf mein Code unten:Wie erstellt man ein Wörterbuch aus dem Fetch Request Array Ergebnis?
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
}
}
vielen Dank, dass Sie sich die Zeit genommen haben, mir zu helfen. aber ich habe einen fatalen Fehler, der sagt "Index außerhalb der Grenzen", wenn ich Ihre Implementierung ausführen. Kannst du mir bitte sagen warum? –
können Sie den genauen Code posten, der Ihnen den Fehler gibt? –
überschreiben func tableView (_ tableView: UITableView, numberOfRowsInSection Abschnitt: Int) -> Int { Rückkehr Int (storedFloors [Abschnitt - 1] .numberOfRooms) // Index außerhalb des Bereichs } –