私はこれで絶対に馬鹿げていて、何が欠けているのか分かりません。おそらくコアデータについて学ぶことはまだありません。セクショニング結果フェッチ結果コントローラブレーク検索表示
これは、節のないテーブルを表示しますが、私の検索ディスプレイコントローラが動作する私のフェッチ結果コントローラです:
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];
より多くの情報を提供する必要がある場合は
-dequeueReusableCellWithIdentifier:forIndexPath:.
-dequeueReusableCellWithIdentifier:
を使用して試してみていない..私はこの1つにそんなに私の頭を悩まよ..お尋ねください:' 'とありません-dequeueReusableCellWithIdentifier:forIndexPath: '。 – chris@chrisに感謝します...それは検索ディスプレイコントローラが動作しています。しかし、コアデータ内の更新(削除のカップル)があれば、インデックスとセクション名を除いてすべてのデータが消えるようにテーブルが分割されます。それはセクション化とインデックスなしで動作します:-(エラー:CoreData:エラー:深刻なアプリケーションエラーです。-controllerDidChangeContent:*** - [__ NSArrayM insertObject:atIndex:]の呼び出し中にNSFetchedResultsControllerの代理人から例外がキャッチされました。 :オブジェクトはuserInfo(null)でゼロにすることはできません –
これを試してください:http://stackoverflow.com/questions/3077332/how-to-refresh-a-uitableviewcontroller-or-nsfetchedresultscontroller – MCKapur