如何在 indexPath 的 cellForRow 中使用多个获取请求结果数组
Posted
技术标签:
【中文标题】如何在 indexPath 的 cellForRow 中使用多个获取请求结果数组【英文标题】:How to use multiple fetch request result arrays in cellForRow at indexPath 【发布时间】:2017-03-27 09:49:13 【问题描述】:我不知道如何设置单元格的内容以显示来自多个实体对象实例的信息。在同一个单元格中,我需要显示 [Floors] 中的楼层号、[Rooms] 中的房间类型、传感器类型 [Alarms] 以及在同一阵列中找到的传感器状态。 首先,我对在 numberOfRowsInSection 函数中应该做什么感到困惑。要计算的数组是什么。 其次是索引路径函数处的行单元格。我再次需要获取正确数组的正确索引路径。我想这与实体之间的关系有关,但我不确定这是否是正确的方法。 有人可以花点时间帮助我吗?下面的代码清单和图片。谢谢你。
class InspectTheSystemTableVC: UITableViewController
//MARK: - Properties
private var managedObjectContext: NSManagedObjectContext!
private var storedFloors = [Floors]()
private var storedRooms = [Rooms]()
private var storedAlarms = [Alarms]()
//MARK: - Actions
override func viewDidLoad()
super.viewDidLoad()
managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
loadFloorData()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
private func loadFloorData()
let floorRequest: NSFetchRequest<Floors> = Floors.fetchRequest()
let roomsRequest: NSFetchRequest<Rooms> = Rooms.fetchRequest()
let alarmRequest: NSFetchRequest<Alarms> = Alarms.fetchRequest()
floorRequest.returnsObjectsAsFaults = false
roomsRequest.returnsObjectsAsFaults = false
alarmRequest.returnsObjectsAsFaults = false
do
storedFloors = try managedObjectContext.fetch(floorRequest)
storedRooms = try managedObjectContext.fetch(roomsRequest)
storedAlarms = try managedObjectContext.fetch(alarmRequest)
catch
print("could not load data from core \(error.localizedDescription)")
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int
return 1
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 1
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "system cell", for: indexPath) as! SystemCell
return cell
【问题讨论】:
为所有不同类型创建不同的数据源,并在您在它们之间切换时重新加载表格视图。 谢谢您的回答,但请您说的更具体一点吗? 你能分享代码以便我更好地理解问题吗..? 3 个数组是否同步?我的意思是索引 0 处的数据是否与索引 0 处其他数组中的其他数据匹配?还是这 3 个数组有问题? 它们是同步的。我 【参考方案1】:Create a Struct which holds the required array values.
Eg .
Struct Entities
var room = Room()
var floor = Floor()
var alarm = Alarms()
var tableDataSource = [Entites]()
// Now add required data to entities array by iteration
// tableDataSource count will be your number of rows in section count
【讨论】:
以上是关于如何在 indexPath 的 cellForRow 中使用多个获取请求结果数组的主要内容,如果未能解决你的问题,请参考以下文章
如何将 indexPath 数组拆分为单独的 indexPath 数组,每个数组的 indexPath 具有相同的 indexPath.section
如何获取 NSMutableArray 的 indexPath 值?
如何在 NSMutableArray 中存储 indexPath 时传入节值