在我的 iOS 应用程序中,我有一个核心数据,我注意到有时在特定 View 中,当我从核心数据中检索信息时,并不总是最新的,我解释得很好:
如果我更新核心数据中的一些值,然后进入特定 View 查看此信息,该信息不是最新的,现在我将展示如何访问我的数据库:
.h
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
.m
@synthesize managedObjectContext;
- (NSArray *)sortInformation{
if (managedObjectContext == nil) {
managedObjectContext = [(AppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MyEntity" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
....
然后我在表格 View 中显示我的信息,一切正常,只有这个问题,有时我在另一个 View 中完成的更新似乎没有在这个 View 中读取,但是如果我关闭应用程序,我从后台关闭它,然后我重新打开它一切正常......所以我已经正确地保存了核心数据中的更新,所以我认为问题出在这个 View 中,也许我有一个旧的引用核心数据而不是更新版本,可能是这个问题:
if (managedObjectContext == nil) {
managedObjectContext = [(AppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext];
}
只有在变量 managedObjectContext 为 nil 时才刷新,所以只有在 View 被释放时才刷新......所以永远不会,因为它是我在 UITabbarController 中的 Root View Controller 之一,所以我的问题是,我如何访问核心数据总是有它的更新版本?
最佳答案
无需刷新上下文,只需调用 managedObjectContext 上的保存方法,如 [managedObjectContext save];
或者如果您使用多个托管对象上下文,您应该合并上下文所做的更改
关于iphone - 刷新引用 ManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005369/