0

記事がダウンロードされてオフラインで表示できるRSSリーダーコードに取り組んでいます。問題は、すべての記事がダウンロードされた後でのみ、見出しを含むテーブルビューが更新されることです。コアデータが使用されます。したがって、NSobjectcontextが保存されるたびに、[self tableview updatebegins]が呼び出されます。テーブルは、fetchcontrollerコアデータを介して更新されます。

記事を保存するたびにNSobjectcontextを保存しようとしましたが、テーブルビューが更新されません。記事が保存され、テーブルビューがすぐに更新されるinstapaperテーブルビューに似たメカニズムが必要です。あなたが解決策を知っているなら助けてください。前もって感謝します。


理解を深めるためのコードの追加

AppDelegate.mには次のコードが含まれています

- (void)feedSuccess:(ZSURLConnectionDelegate*)delegate

  NSManagedObjectContext *moc = [self managedObjectContext];

  CXMLElement *root = [document rootElement];
  CXMLElement *channel = [[root elementsForName:@"channel"] lastObject];

  NSFetchRequest *request = [[NSFetchRequest alloc] init];
  [request setEntity:[NSEntityDescription entityForName:@"FeedItem" inManagedObjectContext:moc]];
   for (CXMLElement *item in [channel elementsForName:@"item"])    
   { 
   // push element in core data and then save context
   //Save context 
    [moc save:&error];
  ZAssert(error == nil, @"Error saving context: %@", [error localizedDescription]);
  }

これにより、RootviewController.mのテーブル変更コードがトリガーされます

  - (void)controllerWillChangeContent:(NSFetchedResultsController*)controller 
{
  [[self tableView] beginUpdates];
}
4

1 に答える 1

0

コントローラを使用する場合はNSFetchedResults、デリゲートメソッドを使用するだけです

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;

次のように:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// In the simplest, most efficient, case, reload the table view.
    [self.tableView reloadData];
}

基になるを更新するたびNSManagedObjectContextに、テーブルも自動的に更新されます。

于 2010-05-09T18:52:15.250 に答える