Ios NSFetchedResultsController未将数据更新到UITableViewController

Ios NSFetchedResultsController未将数据更新到UITableViewController,ios,xcode,core-data,nsfetchedresultscontroller,Ios,Xcode,Core Data,Nsfetchedresultscontroller,我有以下功能: - (void)initFetchRequest { NSManagedObjectContext *context = self.managedObjectContext; NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@"Shindy" inManagedObjectContext:

我有以下功能:

- (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];
最后,在我的
cellforrowatinexpath

Shindy *shindy = [fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = shindy.details;
数据正在从另一个控制器输入,当我返回此控制器时,
UITableViewController
没有更新


我在这里遗漏了什么?

如果您是从另一个视图控制器(例如,导航控制器中的pop)返回,则不会调用您的
viewdiload
。因此,您的数据将不会更新。如果希望发生这种情况,应该实现并设置fetchedResultsController.delegate=self。每当发生更改时,它将更新您的表。有一个不太优雅的解决方案,从
视图调用
initFetchRequest
方法将出现
,但我推荐第一个解决方案。希望这有帮助

使用
fetchedResultsController
作为
self.fetchedResultsController
在任何地方都保持一致,以确保引用的对象正确。另外,为什么要在
initFetchRequest
方法中执行
performFetch
两次?我正在尝试这两种方法。我在发布此代码之前忘记删除它。我添加了
self
。。。仍然不起作用:(检查您保存的数据是否确实正确保存好,我使用了
NSLog
来确保数据保存在我输入数据的另一个控制器中,但是当我返回到初始视图控制器时,相同的
NSLog
返回
NULL
。我添加了
self.fetchedResultscocontroller.delegate=self;
在我的
视图中将出现
方法…仍然不工作:(这不是我说的。你应该在
initFetchRequest
方法中添加它,并像这里所说的那样实现它: