NSFetchedResultsController给定的节名称找到该节的索引

时间:2013-12-22 07:11:34

标签: ios uitableview nsfetchedresultscontroller

我有一个包含多个部分的NSFetchedResultsController。我的应用程序保证部分名称是唯一的。现在给出一个NSString,我想知道它是否是任何部分的名称。如果是这样,请返回匹配部分的部分编号。

天真的方法是迭代self.fetchedResultsController.sections并将节名称与给定的字符串进行比较。

我想知道sectionForSectionIndexTitle:atIndex是否可以更好地解决这个问题。 以下代码崩溃:

  int temp = [self.fetchedResultsController sectionForSectionIndexTitle:@"A-Section-Name" atIndex:0];

找到名称与输入字符串匹配的部分的节号是什么?

谢谢!

厄尔本

1 个答案:

答案 0 :(得分:1)

您使用的方法是 index 标题部分(显示在整个表格右侧的标题),而不是部分标题。你必须使用sections属性,或者自己缓存部分标题,但这可能不值得。我会做类似的事情:

NSUInteger sectionIndex = [[self.fetchedResultsController.sections valueForKey:@"name"] indexOfObject:sectionName];

其中sectionName是传递的名称。这会将sectionIndex设置为适当的索引,如果该部分不存在,则设置为NSNotFound

在数组上调用valueForKey:将返回一个数组,其中包含数组中每个项目上该键的值。它经常被忽视,非常有用。

这似乎比任何缓存解决方案都更简单,因为您不需要使缓存保持最新。如果你在一个循环中没有多次调用它,它应该没问题。