0

我想在 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允许,请指教?

还有其他最佳实践方法吗?我全是耳朵!谢谢。

4

2 回答 2

1

查看NSFetchedResultsController。这是它的作用:

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

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

于 2013-04-29T00:49:15.090 回答
0

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

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

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

于 2013-04-29T04:41:46.633 回答