2013-10-09 167 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

相關問題