2012-06-22 49 views
0

我已經經歷了幾個類似的問題走了,但能達到這個明確的點...在哪裏保存核心數據上下文...?

我想節省applicationWillTerminate背景:應該是足夠的,但會使得對核心數據便箋增加太多的變化我的應用程序的記憶......?

我應該多保存一次..?我知道,一遍又一遍地保存上下文會減少設備的閃存驅動器的壽命,並且蘋果建議我們不要經常這樣做。

是否有任何其他應用程序忘記核心數據上下文appart從哪裏終止?...?

感謝您的輸入..

+1

取決於客戶因失敗或意外情況而丟失所有數據時會有多憤怒。當您的應用程序被暫停時,您將不會收到終止消息。所以如果它在這個狀態下被殺死,poof就會獲得所有的數據。除非你的應用程序不支持後臺模式,否則終止很少被調用。 – borrrden

+0

所以我應該在applicationWillEnterBackground中保存我的上下文,謝謝你的輸入。 –

+0

http://stackoverflow.com/questions/10887437/objective-c-core-data-saving-approach –

回答

0

應用程序的保存行爲取決於應用程序。我的意思是,在基於文檔的應用程序中,用戶希望文檔在命中cmd-S時被保存。所以你應該這樣做。越來越多的用戶期望他們使用自動保存的應用程序。

保存行爲是從用戶角度出發的設計選擇。用戶界面和交互設計決定了應用程序的行爲方式。

除了這些考慮,技術現實當然不能忽視。內存使用,崩潰的錯誤和數據丟失,撤消管理,電池消耗,所有這些都會對應用程序行爲和最終用戶產生影響。我真的不認爲SSD的預期壽命是你應該考慮的因素之一。

最後一句話:對於給定的商店,您可以擁有多個對象上下文。你可以有孩子的比賽。因此,您可以保存部分數據而不是完全變更待辦事項,您可以優先考慮某些實體的優先級別......許多實現選擇和可能的策略,但它們應該由用戶界面和交互設計驅動。他們必須。

保存時對用戶有意義。

-1

這是一種方式將數據存儲到Coredata。

-(void) setEmailContactsToCoredata:(id)sender 
{  

     NSManagedObjectContext *context=[appDelegate managedObjectContext]; 

     NSManagedObject *newData = [NSEntityDescription insertNewObjectForEntityForName:@"EmailContacts" inManagedObjectContext:context]; 

     [newData setValue:self.emailTextField.text forKey:@"email_ID"]; 



     NSError *error; 

     if (![context save:&error]) 
     { 
      NSLog(@"There was an error while inserting Data into coredata"); 
     } 
     else 
     { 
      NSLog(@"Success fully Saved your email id"); 
     } 
} 
+0

你不明白我的問題..我知道如何保存數據...請仔細閱讀。像每次單獨添加新電子郵件一樣保存它會損壞設備的硬盤驅動器。 –