UITableView cellForRowAtIndexPath和numberOfRowsInSection - 填充的最佳方式

时间:2013-04-28 23:59:58

标签: uitableview core-data ios6

我想在UITableView中显示所有数据。有时变量是NULL;有时某些部分只有1行,而其他部分可能有2行或3行,具体取决于哪些变量有数据。

目前,在CellForRowAtIndexPath中,所有If和else if语句开始看起来非常混乱。即对于numberOfRowsInSection:

if (x!=NULL) return 1; else if (y!= NULL) return 2; else if ((x==NULL) && (y==NULL) return 3. 

你只能想象cellForRowatIndexPath会是什么样子。现在尝试为15个属性做类似的事情!它真的很讨厌,并且会产生很多错误。

我知道有一种方法可以用plist来做。我从来没有使用plist,它基于NULL变量动态创建节。如果plist允许,请指教?

还有其他最佳做法吗?我全都耳朵!感谢。

2 个答案:

答案 0 :(得分:1)

结帐NSFetchedResultsController。这是它的作用:

  

使用获取的结果控制器有效地管理从Core Data获取请求返回的结果,以便为UITableView对象提供数据。

这里有一个很棒的教程:http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller

答案 1 :(得分:0)

最佳做法是使用NSFetchedResultsController @Aaron建议。如果正确设置谓词,则不会获得NULL值:

[request setPredicate:[NSPredicate predicateWithFormat:@"(attributeThatMayBeNull != %@ AND booleanAttribute = %@)",[NSNull null],[NSNumber numberWithBool:NO]];

由于您不会获得您不想要的值,因此您无需在numberOfRows dataSource方法中检查它们。只需使用fetchedResults计数。