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

UITableView cellForRowAtIndexPath和numberOfRowsInSection——填充的最佳方式,uitableview,core-data,ios6,Uitableview,Core Data,Ios6,我想在UITableView中显示所有数据。有时变量为空;有时,某些部分只有一行,而其他部分可以有2或3行,具体取决于哪些变量包含数据 目前,在cellforrowatinexpath中,所有If和elseif语句都开始显得非常混乱。i、 e.对于第节中的行数: if (x!=NULL) return 1; else if (y!= NULL) return 2; else if ((x==NULL) && (y==NULL) return 3. 你只能想象CellForRo

我想在UITableView中显示所有数据。有时变量为空;有时,某些部分只有一行,而其他部分可以有2或3行,具体取决于哪些变量包含数据

目前,在cellforrowatinexpath中,所有If和elseif语句都开始显得非常混乱。i、 e.对于第节中的行数:

if (x!=NULL) return 1; else if (y!= NULL) return 2; else if ((x==NULL) && (y==NULL) return 3. 
你只能想象CellForRowatineXpath会是什么样子。现在尝试对15个属性执行类似操作!这真的很糟糕,而且会给错误留下很大的空间

我知道有一种方法可以用plist实现。我从来没有使用plist,它根据空变量动态创建节。如果plist允许,请告知

还有其他最佳实践方法吗?我洗耳恭听!谢谢。

退房。它的作用如下:

您可以使用“获取结果”控制器有效地管理从核心数据获取请求返回的结果,以便为UITableView对象提供数据


这里有一个很棒的教程:

最佳实践是按照@Aaron的建议使用
NSFetchedResultsController
。如果正确设置谓词,则不会得到空值:

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

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

谢谢。我知道NSFetchedResultsController,但有时如果某些属性为null,某些部分将丢失。我们希望显示所有变量,但不希望显示它们是否为null,也不希望显示它们是否为布尔值。如何使用NSFetchedResultsController测试空变量?将NSFetchedResultsController的数据源(NSFetchRequest和NSPredicate)设置为仅返回要显示的数据。如果不想显示空/布尔数据,请不要在搜索中包含该数据。您不必在tableview委托方法中执行任何额外的筛选。例如,只需在
numberOfSectionsInTableView
方法中执行
[[sections]count]
。获取时,我不知道哪些是空的。我不需要显示布尔值,但需要知道它是1还是0。这将决定UITableView中的节数和行数