0

私は機能を持っています:

- (void)initFetchRequest
{
    NSManagedObjectContext *context = self.managedObjectContext;
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"Shindy" inManagedObjectContext:self.managedObjectContext];
    // Configure the request's entity, and optionally its predicate.
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"details" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];

    fetchedResultsController = [[NSFetchedResultsController alloc]
                                              initWithFetchRequest:request
                                              managedObjectContext:context
                                              sectionNameKeyPath:nil
                                              cacheName:nil];

    NSError *error = nil;
    [self.managedObjectContext executeFetchRequest:request error:&error];
    [fetchedResultsController performFetch:&error];

    if (![self.fetchedResultsController performFetch:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }    
}

私のviewDidLoadメソッド内で次のように

NSURL *url = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];
document = [[UIManagedDocument alloc] initWithFileURL:url];
self.managedObjectContext = document.managedObjectContext;

[self initFetchRequest];

そして最後に、これは私の中でcellForRowAtIndexPath

Shindy *shindy = [fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = shindy.details;

別のコントローラからデータが入力されています。このコントローラに戻ってUITableViewControllerも更新されません。

ここで何が欠けていますか?

4

1 に答える 1

0

別の View Controller から戻ってきた場合 (たとえば、ナビゲーション コントローラーで pop を使用)、あなたのviewDidLoadは呼び出されません。したがって、データは更新されません。それを実現したい場合は、NSFetchedResultsControllerDelegateと setを実装する必要がありますfetchedResultsController.delegate = self;。変更が発生するたびにテーブルが更新されます。initFetchRequestメソッドを呼び出すには、あまりエレガントではない解決策がありますがviewWillAppear、最初の解決策をお勧めします。お役に立てれば!

于 2013-01-06T23:21:47.500 に答える