Ios 正在保存核心数据条目,但它们不能直接用于获取,为什么?

Ios 正在保存核心数据条目,但它们不能直接用于获取,为什么?,ios,objective-c,core-data,nsfetchedresultscontroller,Ios,Objective C,Core Data,Nsfetchedresultscontroller,为了学习如何重构etc,我将所有的核心数据和nsfetchcontrollers移动到两个类中,一个用于管理所有的核心数据方法,另一个用于处理所有的获取。我有一个问题,上次输入的数据不可见,除非我重新启动应用程序或添加更多数据 我有两个ViewController,第一个(A)显示数据,第二个(B)用户可以输入数据 我的核心数据类是一个单例数据管理器,我的抓取类叫做fetchManager。在每个viewController的ViewDidLoad中,我执行以下操作: dataManager =

为了学习如何重构etc,我将所有的核心数据和nsfetchcontrollers移动到两个类中,一个用于管理所有的核心数据方法,另一个用于处理所有的获取。我有一个问题,上次输入的数据不可见,除非我重新启动应用程序或添加更多数据

我有两个ViewController,第一个(A)显示数据,第二个(B)用户可以输入数据

我的核心数据类是一个单例数据管理器,我的抓取类叫做fetchManager。在每个viewController的ViewDidLoad中,我执行以下操作:

dataManager = [XEPDataManager sharedInstance];
self.managedObjectContext = dataManager.managedObjectContext;
self.fetchManager = [[XEPResultFetchedController alloc] initWithContext:self.managedObjectContext];
然后,在“我在视图中执行提取”中,将出现并显示数据量

1. NSLog(@"Count: %i", [[fetchManager fetch] count]);
在B中,我创建了一个新实体,在返回a之前,我执行了一个保存在ViewWillEnglish中的操作

2. 
if (![self.managedObjectContext save:&error]) {
    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
我正在经历这样的事情:

  • 启动应用程序
  • 查看
  • 计数:0
  • 转到B,输入数据,然后返回A
  • 计数:0(应为1)
  • 重复步骤4
  • 计数:1(预期为2)
  • 重新启动应用程序 9:计数:2 10:重复步骤4 11:计数:2
  • 很明显,数据被保存了。。但不知何故不是直接的,我首先认为这是因为我在分配“本地版本”(不确定它是否是这样工作的)时,在处理上下文时遇到了麻烦。在获取ViewDidDisplay之前,我尝试用singleton dataManager中的上下文更新我的获取管理器中的上下文,但没有成功


    有人知道它可以是什么吗?

    原因是上下文上的保存是异步的。完成后你会收到通知。正确的方法是实现nsfetchcontroller的委托方法。这样,当发生某些事情时,您将得到一个回调,您可以相应地更新UI。

    ,然后我再回到a
    。获取和保存的方法是什么(
    视图将出现:
    /
    视图显示:
    /
    视图将消失:
    /其他内容)?是的,很抱歉忘记添加。我在视图中获取显示并在视图中保存将消失您是否使用线程限制?啊,这可以解释一切。因为在我的保存和获取之间应该只有几毫秒。将尝试实现委托方法和某种必须重新绘制ui的侦听器。