1
私は、エンティティ属性とnumに基づいていくつかのセクションを持つテーブルビューを設定することに遭遇しました。同じエンティティの別の属性に基づくセルの私はFloorsというエンティティを持っています(複数のインスタンスが存在する可能性があります)。これには2つの属性があります。床番号と床の部屋数です。フェッチ要求を実行し、配列を返します。私の知るところでは、[floorNumber:numberOfRoomsInFloor]のように辞書を設定する方法が分からないので、テーブルのセクション数と各セクションの行数を定義することができます。私は試して失敗し、私はサイトのスレッドを見ていたが、実際に私のために働くことができる解決策を見ていない。もし誰かが少し時間を取って私を助けてくれたら、それは私にとっては大変意味があります。あなたは辞書を必要はありませんフェッチ要求の配列結果から辞書を構築する方法は?
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
}
}
私を助ける時間をとってくれてありがとう、ありがとう。しかし、私はあなたの実装を実行すると、 "インデックスの範囲外"と言う致命的なエラーがあります。なぜ私に教えてくれますか? –
あなたはエラーを返す正確なコードを投稿できますか? –
オーバーライドfunc tableView(_ tableView:UITableView、numberOfRowsInSectionセクション:Int) - > Int { 戻り値Int(storedFloors [section-1] .numberOfRooms)//インデックスが範囲外です } –