如何使用多种不同类型的 NSManagedObjects 填充 UITableView?我正在建立一个数字培训日志,所以目前我的三种类型是“睡眠”、“食物”和“水”。我已经成功地将 NSFetchedResultsController 用于 1 种对象类型,但尚未推广到三种。
谢谢。
如何使用多种不同类型的 NSManagedObjects 填充 UITableView?我正在建立一个数字培训日志,所以目前我的三种类型是“睡眠”、“食物”和“水”。我已经成功地将 NSFetchedResultsController 用于 1 种对象类型,但尚未推广到三种。
谢谢。
基本上,您将使用您的NSFetchedResultsController
, 并根据需要提取每个托管对象,最多可能有 3 个查询(取决于您的数据库的设计方式,如果存在关系,它可能只是一个)。
一旦你有了这个,另一部分几乎和你用 3 个部分填充一个表一样。你可以这样做:
typedef enum
{
kMyTableSection1,
kMyTableSection2,
kMyTableSection3
}kMyTableSectoinTypes
then in your cellForRowAtIndexpath...
switch (indexpath.section)
case : kMyTableSection1
//Object at index from the correct array which you got from your previous query using the fetched results controller.
等等
希望有帮助。
使用 NSFetchedResultsController 可能有点挑战,因为它通常使用 NSFetchRequest 进行初始化,而 NSFetchRequest 又只需要一个实体。我相信你应该:
一个。定期从 Core Data 中获取所有数据,然后像通常提供数组一样将它们提供给表格视图:
NSMutableArray *objectsArray = [NSMutableArray array];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:sleepEntity];
[objectsArray addObjectsFromArray:[managedObjectContext executeFetchRequest:fetchRequest error:NULL]];
[fetchRequest setEntity:waterEntity];
[objectsArray addObjectsFromArray:[managedObjectContext executeFetchRequest:fetchRequest error:NULL]];
[fetchRequest setEntity:foodEntity];
[objectsArray addObjectsFromArray:[managedObjectContext executeFetchRequest:fetchRequest error:NULL]];
// now display objectsArray in a table view as you normally would.
湾。或者,您应该考虑使用诸如 Sensible TableView 之类的框架。使用 Sensible,您可以自动完成所有操作,包括对象的详细视图。我使用 Sensible 已经有一段时间了,我几乎没有碰过上面的任何代码。