2013-12-22 36 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:將返回一個數組,其中包含該數組中每個項上該鍵的值。它經常被忽視,非常有用。

這似乎比任何緩存解決方案都要簡單得多,因爲您不需要保持緩存是最新的。如果你沒有在循環中調用它多次,它應該沒問題。

相關問題