如何使用3种不同类型的NSManagedObjects填充UITableView

时间:2013-05-16 00:53:07

标签: ios uitableview core-data nsfetchedresultscontroller

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

感谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

基本上,您将使用您的NSFetchedResultsController,并根据需要提取每个托管对象,最多可能有3个查询(如果存在关系,则取决于数据库的设计方式,它可能只是一个)。 / p>

一旦你有了这个,其他部分与填充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.

等等

希望有所帮助。

答案 1 :(得分: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了一段时间,我几乎不接触任何上述代码。