0
我有一些問題需要一個目前我不知道的解決方案。 我執行一個獲取請求,該請求返回具有2個屬性(樓層號和房間數量)的Floors實體對象數組。我想用與層數和數量相對應的部分的數量來製作表格。每個部分的行數對應於每層的房間數量。我使用一個結構和2在循環中分隔表的屬性。結果令我感到困惑:如果我聲明一層它工作,並且下一個vc中的選取器顯示「0」層。如果我給它分配2個房間,我會得到一個巨大的打印響應和一個有10行的表格。請看下面的代碼和提供的圖片,如果有人能幫助我會感激。使用獲取請求結果數組和結構來設置UITableView部分和行的問題
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]
謝謝你的回答。它是完全有道理的,但它不能正確顯示數據。如果我將2個房間分配到1個樓層,我會在每行中獲得一個帶有2行「1」的表格。這是我嘗試過這個結構的原因。我已經用你給我的內容編輯了發佈的代碼。如果你有時間可以請看看它? –
用'cell.floorNumberTxt.text = String(indexPath.row)'替換'cell.floorNumberTxt.text = String(storedFloors [indexPath.section] .floorNumber)' –
嗨。是的,我已經做到了。對於2個房間,每個房間我只有1行,顯示值爲「0」。我還在控制檯中得到一個警告:所有對象都有數據錯誤。所以在構建數據庫方面顯然存在問題。我會發佈一個關於這個問題的新問題,我會在這裏粘貼鏈接。如果你有一點時間看它,也許發現錯誤這將是偉大的。謝謝 –