2009-12-14 55 views
0

我有一個應用程序,允許您編輯一些百分比,但它只會讓您提交這些更改,如果百分比合計爲100.但由於核心數據模板包含應用程序中的保存代碼將終止。如果用戶改變了某些東西然後退出應用程序,那麼該項目當然會被保存,即使它沒有增加到100%。iPhone核心數據應用程序將終止保存數據庫所需?

因此,我只是決定註銷掉應用程序中的保存將終止。我知道另一個選擇是使用另一個上下文進行編輯,然後合併更改或設置我的上下文值直到實際保存點。然而,我沒有看到任何傷害註釋掉這一行,因爲當用戶點擊保存按鈕時,我在應用程序中保存了我想要的任何東西,所以我的問題是:應用程序的保存是否會終止強制?這可能會產生什麼後果?注意到應用程序在評論這些行後仍能正常工作(這是我的預期),這一點很重要。

預先感謝您。

-Oscar

+1

我相信你已經回答了你自己的問題。順便說一句,唯一有資格回答你的問題的人就是你! – KevinDTimm 2009-12-14 16:06:55

回答

1

你可以隨時保存。

但是,您永遠不會知道應用何時會終止。與傳統平臺(例如臺式機)上的應用程序不同,iPhoneOS將隨機終止您的應用程序(從應用程序的角度來看)。您將得到的唯一警告將是發送給應用程序代理的applicationWillTerminate消息。如果你沒有在那裏處理保存,那麼很可能在某個時候,你的用戶會丟失數據。

我認爲你應該重新考慮你的設計。這聽起來像是你將計算放入托管對象中,這可能(1)在代碼中的其他位置處理,或者(2)由瞬態屬性處理。您不應該有這樣一種情況,即無法在帽子下面保存被管對象。這樣做會使您的數據模型完全依賴外部代碼來實現內部完整性。這會導致維護,可移植性和升級方面的問題。

+0

如果數據在合計達到100%時無效,則不保存中間狀態可能完全適用於應用程序設計。 – Tim 2009-12-14 16:59:10

+0

謝謝你的回答。是的,我將重新設計,以便僅當數據總計達到100%時纔會修改managedobject。 – 2009-12-14 21:20:51

+0

我決定註冊一個UndoManager的這些變化,然後簡單地在應用程序將終止執行此操作: 而([managedObjectContext.undoManager canUndo]) \t { \t \t [managedObjectContext.undoManager撤消]; \t} 然後,當然如果數據增加到100%,undomanager設置爲零。 然後保存。它運作良好,這會是一個好方法嗎? – 2009-12-15 16:06:17

0

它不是強制保存在應用程序將終止。只要您覺得適合應用的上下文,就可以保存。