2013-12-22 35 views
0

我有一个NSFetchedResultsController具有多个部分。我的应用程序保证该部分名称是唯一的。现在给了一个NSString我想知道它是否是任何部分的名称。如果是这样,请返回匹配部分的部分号码。NSFetchedResultsController给出部分名称找到该部分的索引

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

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

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

什么是找到他的名字输入字符串匹配的段的部分号码的正确方法?

谢谢!

厄尔

回答

1

你使用的方法是部分指数冠军(那些向下显示整个表的右侧),而不是部分的标题。您必须使用sections属性,或者自己缓存节标题,但这可能不值得。我会做这样的事情:

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

sectionName在名称传递。这将设置sectionIndex为适当的索引,或者NSNotFound(如果该部分不存在)。

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

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

相关问题