2013-04-28 34 views
0

我想在UITableView中显示所有数据。有时变量是NULL;有时某些部分只有1行,而其他部分可能有2或3行,具体取决于哪些变量具有数据。UITableView cellForRowAtIndexPath和numberOfRowsInSection - 填充的最佳方法

目前,在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允许,请告知?

其他最佳实践方法?我都是耳朵!谢谢。

回答

1

结帐NSFetchedResultsController。以下是它的作用:

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

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

+0

谢谢。我知道NSFetchedResultsController,但有时如果某些属性为空,某些部分将会丢失。我们想要显示所有的变量,但是如果它们是空的,并且它们也不是BOOLEANS。我如何使用NSFetchedResultsController测试NULL变量? – user1107173 2013-04-29 01:01:38

+0

将您的NSFetchedResultsController的数据源(NSFetchRequest和NSPredicate)设置为仅返回想要显示的数据。如果您不想显示它,请不要在搜索中包含空值/布尔值数据。你不应该在你的tableview委托方法中做任何额外的过滤。例如,在'numberOfSectionsInTableView'方法中执行'[[#Fedched results controller#> sections] count]''。 – 2013-04-29 01:07:12

+0

当我读取时,我不知道哪些是NULL。我不一定需要显示BOOLEAN,但需要知道它是1还是0.这将确定UITableView中的部分和行的数量 – user1107173 2013-04-29 01:12:49

0

最好的做法是使用一个NSFetchedResultsController作为@Aaron建议。如果你正确设置你的断言,你不会得到NULL值:

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

既然你不会得到你不想要的值,你就不会在你的numberOfRows数据源的方法来检查他们。只需使用fetchedResults计数。

相关问题