如何使用多种不同类型的NSManagedObjects填充UITableView? 我正在建立一个数字培训期刊,所以目前我的三种类型是“睡眠”,“食物”和“水”。 我已经成功地将NSFetchedResultsController用于1个对象类型,但是已经推广到了3个对象类型。
感谢。
答案 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了一段时间,我几乎不接触任何上述代码。