2013-10-09 73 views
1

条件应用从后台重新开始,NSManagedObject

  • 获取的通知(TXT消息)
  • 或打开/关闭通知中心
  • 或者切换到其他应用的无财产,回来

基本上,应用程序从短暂的背景回来。

问题

布局是好的,但是从背景恢复后我的一些特性,我从CoreData得到的是空的。几乎所有的视图控制器都存在这个问题。

项目

这是有主的TabBar控制器应用,而在标签中的两个navigationcontrollers,也许两个层面viewcontrollers的,有自己的孩子UIViews(即使用一些信息的)。后端由Parse和CoreData组成。

怪异的一部分

返回从背景 - >属性上viewWillAppear中确定(创建ID的备份) - >它们是零秒后 - >我需要手动让他们回来(从ID我只是存储)

下面是截图,把一个叫每5秒函数内的破发点时,检查当前时间(link to bigger):enter image description here

我做什么

NSCoder用于状态还原,每个视图控制器都有一个还原ID,但是当应用程序变为活动状态时它不会被调用。我不认为NSCoder是这里的问题,因为从操作系统自行杀死它或从用户处强制退出时使用它的文档。

我试图从NSNotificationCenter中手动刷新相应ViewControllers中的内容,如果NSManagedObjects为零,但它不具备未来性,并且在每个视图上从来都不是相同的逻辑。

有什么想法?谢谢!

我的AppDelegate:

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    NSLog(@"Will Resign Active"); 
} 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    NSLog(@"Entered Background"); 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    NSLog(@"Will enter Foreground"); 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"needsRefresh" object:self userInfo:nil]; // Helpful in some viewcontrollers to save variables that are not nil. 

    [PF_FBSession.activeSession handleDidBecomeActive]; 
} 

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    NSLog(@"Will Terminate"); 
} 
+1

您是否曾尝试在'_booking'的setter上放置一个断点,并查看哪些是无效的?很难知道发生了什么,因为你没有显示任何实现代码,或者你有任何通过'applicationWillEnterForeground'发送的通知可能会影响到这一点。 – iwasrobbed

+0

@iWasRobbed修改!我的代表非常空,我将再次编辑更多相关代码 –

+0

我在Swift项目中遇到同样的问题。任何人解决这个问题? – nh32rg

回答

2

对于那些发现这个线程,这里是我找到了解决办法。

我的问题和答案是特定于我的项目。

我有另一个控制器,负责照顾我所有的数据库连接,它正在监听applicationDidBecomeActive。 这是调用我的数据刷新,但也是一个“清理”,即删除/编辑一些NSManagedObjects,然后保存。

结论:内存地址不一样,对象被认为是不一样的,因此在我当前的页面上是空的。

我通过停止清理每个AppDidBecomeActive来修复它,但将该逻辑转移到AppDidFinishLaunching。

希望有帮助!

+1

以下发布了答案我正在做一些类似的事情,我已经忘记了,你的提示提醒了我!谢谢您的帮助。 – nh32rg

+0

感谢提示,它帮助 – OthmanT

相关问题