我想在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允许,请指教?
还有其他最佳做法吗?我全都耳朵!感谢。
答案 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计数。