iphone - 刷新引用 ManagedObjectContext

标签 iphone ios nsmanagedobjectcontext

在我的 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/

相关文章:

iphone - 获取音频路由给出空字符串

iphone - 如何创建一个完整的 NSDate 对象来表示下一个指定的日期时间?

iphone - 如何检测用户是否正在使用他的设备行走/运行?

IOS 10 语音识别 API : Error Domain=kAFAssistantErrorDomain Code=1101

swift - 当保存在后台异步完成时,我应该如何保证嵌套上下文中不同线程的获取结果是最新的?

ios - 保持 CoreData NSManagedObject 新鲜

iphone - Xcode 构建成功但无法在 iPhone 上运行

ios - ios 7 中的自定义 leftBarButtonItem 问题

html - iOS中如何获取href标签中的数据?

ios - 在 "display"MOC 中更改 NSManagedObject 时在 "scratchpad"MOC 中更新它们