0

如何使用多种不同类型的 NSManagedObjects 填充 UITableView?我正在建立一个数字培训日志,所以目前我的三种类型是“睡眠”、“食物”和“水”。我已经成功地将 NSFetchedResultsController 用于 1 种对象类型,但尚未推广到三种。

谢谢。

在此处输入图像描述

4

2 回答 2

0

基本上,您将使用您的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.

等等

希望有帮助。

于 2013-05-16T01:15:40.140 回答
0

使用 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 已经有一段时间了,我几乎没有碰过上面的任何代码。

于 2013-05-16T03:26:14.410 回答