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
方法中添加它,并像这里所说的那样实现它: