我有一些问题需要一个我不知道的解决方案。 我执行一个获取请求,返回一个Floors实体对象数组,该实体对象有2个属性(楼层数和房间数)。我想制作一个表格,其中包含与楼层数量和数量相对应的部分数量。每个部分中的行数对应于每层的房间数。我使用struct和2 for in循环来分隔表的属性。结果令我感到困惑:如果我声明一层它工作,并且下一个vc中的一个选择器显示“0”楼层。如果我给它分配2个房间,我得到一个巨大的打印响应和一个10行的表。请看下面的代码和提供的图片,如果有人可以提供帮助,我会很感激。
class RoomAndAlarmTypeTableVC: UITableViewController, NSFetchedResultsControllerDelegate {
//MARK: - Properties
private var managedObjectContext: NSManagedObjectContext!
private var storedFloors = [Floors]()
private var resultsArray = [Results]()
//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)
// tableView.reloadData()
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 resultsArray.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultsArray[section].sectionObjects.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "house cell", for: indexPath) as! ViewRooomNumberCell
cell.floorNumberTxt.text = String(storedFloors[indexPath.section].floorNumber)
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return resultsArray[section].sectionName
}
}
[![enter image description here][1]][1]
[![enter image description here][2]][2]
答案 0 :(得分:1)
storedFloors
是一个managedObjects数组,它已经包含了您需要的所有信息。部分的数量为storedFloors.count
,行数为storedFloors[sectionIndex].numberOfRooms
。要构建一个单元格,地板是存储的楼层[indexPath.section] .floorNumber,房间号只是indexPath.row
。
您创建的其他对象错误且令人困惑,应删除。