【发布时间】:2012-03-04 16:15:34
【问题描述】:
我正在开发一个带有故事板核心数据的应用程序。该应用程序将 uitabbarcontroller 作为 rootview。我已经创建了实体并生成了类。每个选项卡都有自己的 uinavigation 控制器。选项卡 1 中的视图只是从 uilabels 将一些数据保存在数据库中。它工作正常,数据在数据库中。 选项卡 2 中的视图在 uitableview 中显示来自数据库的数据。只有当我杀死应用程序并重新启动它时才会显示数据。所以 ui 表不会被刷新。 第一种方法:我已将托管对象上下文从应用程序委托传递给两个视图。所以 ui 表在杀死并重新启动之前不会刷新。 第二种方法:我(错误)使用了应用程序委托,但结果仍然相同。
MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];
如何实现一个视图仅将数据添加到核心数据(它现在正在执行)而第二个视图收到更改通知并将其显示在 uitableview 中?
编辑
-(NSFetchedResultsController *) fetchedResultsController
{
if (__fetchedResultsController != nil) {
return __fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Favis" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"chapterid" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[NSFetchedResultsController deleteCacheWithName:@"Master"];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return __fetchedResultsController;
}
它是你使用核心数据模板时的代码。仅调整以与我的应用程序一起使用。我在我的两个视图控制器中都有它。
编辑 2
我在我的 uitableview 控制器中实现了nsfetchedresultcontroller。
管理对象返回数据库中数据的确切数量,但 ui 表不会刷新。我也做了[self.tableview reloaddata],但没有运气
【问题讨论】:
标签: core-data ios5 storyboard