7

私はこれで絶対に馬鹿げていて、何が欠けているのか分かりません。おそらくコアデータについて学ぶことはまだありません。セクショニング結果フェッチ結果コントローラブレーク検索表示

これは、節のないテーブルを表示しますが、私の検索ディスプレイコントローラが動作する私のフェッチ結果コントローラです:

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                    managedObjectContext:self.buckyballDatabase.managedObjectContext 
                     sectionNameKeyPath:nil 
                       cacheName:nil]; 

に対し、できるだけ早く私はセクションを追加するsectionNameKeyPathを、適用されます。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    if (tableView == self.tableView) 
    { 
     return [[self.fetchedResultsController sections] count]; 
    } 
    else 
    { 
     return 1; 
    } 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if (tableView == self.tableView) 
    { 
     return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects]; 
    } 
    else 
    { 
     return [self.filteredList count]; 
    } 
} 


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if (tableView == self.tableView) 
    { 
     return [[[self.fetchedResultsController sections] objectAtIndex:section] name]; 
    } 
    else 
    { 
     return nil; 
    } 
} 

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
{ 
    if (tableView == self.tableView) 
    { 
     if (index > 0) 
     { 
      return [self.fetchedResultsController sectionForSectionIndexTitle:title atIndex:index-1]; 
     } 
     else 
     { 
      self.tableView.contentOffset = CGPointZero; 
      return NSNotFound; 
     } 
    } 
    else 
    { 
     return 0; 
    } 
} 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{ 
    if (tableView == self.tableView) 
    { 
     NSMutableArray *index = [NSMutableArray arrayWithObject:UITableViewIndexSearch]; 
     NSArray *initials = [self.fetchedResultsController sectionIndexTitles]; 
     [index addObjectsFromArray:initials]; 
     return index; 
    } 
    else 
    { 
     return nil; 
    } 
} 

- :filteredListはNSArrayのあるところ

*** Assertion failure in -[UITableViewRowData rectForRow:inSection:], /SourceCache/UIKit_Sim/UIKit-2372/UITableViewRowData.m:1630 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect at invalid index path (<NSIndexPath 0x7481040> 2 indexes [0, 1])' 

そして、ここが私のテーブルビューのデータソース実装ある:以下のエラーを投げて、セクションが追加されますが、私の検索ディスプレイコントローラが壊れています例外は、次の行ののcellForRowAtIndexPathにスローされます。 -

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier 
                  forIndexPath:indexPath]; 

より多くの情報を提供する必要がある場合は

+3

-dequeueReusableCellWithIdentifier:forIndexPath:.-dequeueReusableCellWithIdentifier:を使用して試してみていない..私はこの1つにそんなに私の頭を悩まよ..お尋ねください:' 'とありません-dequeueReusableCellWithIdentifier:forIndexPath: '。 – chris

+0

@chrisに感謝します...それは検索ディスプレイコントローラが動作しています。しかし、コアデータ内の更新(削除のカップル)があれば、インデックスとセクション名を除いてすべてのデータが消えるようにテーブルが分割されます。それはセクション化とインデックスなしで動作します:-(エラー:CoreData:エラー:深刻なアプリケーションエラーです。-controllerDidChangeContent:*** - [__ NSArrayM insertObject:atIndex:]の呼び出し中にNSFetchedResultsControllerの代理人から例外がキャッチされました。 :オブジェクトはuserInfo(null)でゼロにすることはできません –

+0

これを試してください:http://stackoverflow.com/questions/3077332/how-to-refresh-a-uitableviewcontroller-or-nsfetchedresultscontroller – MCKapur

答えて

3

は `-dequeueReusableCellWithIdentifierを使用してみてください

+0

これはなぜ機能するのですか?私はあなたを憎む、ココア; _; – figha

+0

これはおそらく役立ちます:http://stackoverflow.com/questions/12714737/where-does-the-索引パスのための識別子を持つ索引可能なパスのパス – chris