我新的IOS和我下面CS193p斯坦福大學的演講,瞭解核心數據,並在演示中使用的教授一類具有某種程度上類似於實際到,如果我們檢查的核心數據的應用程序複選框,同時創建應用程序,並將核心數據放在appDelegate中。這就是教授在演示中所做的,他在AppDelegate中創建了managedObjectContext並使用通知將上下文傳遞給控制器。現在對於作業,他要求使用UIManagedDocument,但我對將它放在哪裏感到困惑。我應該在視圖控制器還是在AppDelegate中聲明它,並使用通知中心傳遞上下文。所以我只想知道哪一個更適合UIManagedDocument。 S何處使用和初始化UIManagedDocument
回答
我發現的最佳方式是創建一個新項目(就像樣本),詢問時選中「使用核心數據」,然後查看AppDelegate。用它來看看它是如何完成的,並可能複製相應的部分(當然需要進行一些調整)。但大多數情況下,使用它來了解Apple如何推薦使用它。
使用具有managedObjectContext
屬性的共享實例創建自定義類。
在AppDelegate的application didFinishLaunchingWithOptions
中,創建您的sharedInstance並將其傳遞給'managedObjectContext`。
MyDataManager *dataManager = [MyDataManager sharedInstance];
dataManager.managedObjectContext = self.managedObjectContext;
還要注意的是,如果你通過點擊「停止」在Xcode終止應用程序,該數據將不被保存(因爲它做了,因爲它應該,當AppDelegate的即將正常關閉應用程序)。
確保在applicationDidEnterBackground
中也有[self saveContext];
,它應該也在applicationWillTerminate
之內。僅在需要時(而不是每次更改)將數據庫寫入內存是一種很好的做法。在AppDelegate中,它還詢問在提交之前數據是否已更改。
當然,如果您有managedObjectContext
實例,也可以手動保存。
如果你更改了數據庫,你可能有再次運行之前刪除模擬器應用程序(否則應用程序會崩潰,因爲舊的數據庫不匹配新的一個)。
編輯:我不記得我讀它,但教授不使用CoreData作爲數據庫預先本身,只能用於管理數據(圖像等)。
您可以初始化您的UIManagedDocument,以便您想要啓動對數據庫的訪問。當我完成任務時(去年),我放入了AppDelegate。現在回頭看看UITabBarController中有兩個ViewController,它們都需要上下文。所以我使用了保羅在講座中所使用的NSNotification機制。
他給出了使用UIManagedDocument在「用戶核心數據」複選框(在創建項目時)的原因是:
- 這是簡單的爲他講解(UIManagedDocument照顧很多複雜的)
- UIManagedDocument使您快速使用iCloud
我剛剛對此進行了審覈。如果你想從保羅聽到他關於它的14分25秒(UIManagedContext)和第12講(秋季2013-14)在會談14:50他開始談論的兩種方式來獲得UIManagedContext - 是UIManagedDocument或「使用核心數據」複選框。
這裏我們一個鏈接到課程上的iTunes:https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550
- 1. 如何正確地初始化,使用和保存UIManagedDocument
- 2. 創建UIManagedDocument和初始iCloud同步
- 3. 何處初始化MutableArray?
- 4. 函數初始化和對象初始化(多處理)
- 5. 初始化,初始化與參數和便利初始化
- 6. UIManagedDocument正確的初始化,並等待,直到它準備好
- 7. UIManagedDocument無法初始化,讓我「鬼實體」錯誤
- 8. 列表和ArrayList初始化和使用
- 9. 初始化,處理和球拍回
- 10. 用=初始化和用{}初始化有什麼區別?
- 11. 用數組或初始化初始化一個NSMutableArray初始化
- 12. 初始化用環和式
- 13. Emacs:使用和初始化CEDET
- 14. constexpr和初始化
- 15. 初始化和ViewControllers
- 16. 何處爲System.loadLibrary執行庫初始化?
- 17. 如何處理初始化常量?
- 18. 如何處理數據庫初始化?
- 19. 何處初始化派生字段?
- 20. 何處正確初始化Groovy元類?
- 21. 何處初始化Dalli ::客戶端
- 22. 如何用zoneID和recordID初始化CKRecord?
- 23. UIManagedDocument處理conflcts
- 24. 使用manytomanyfield初始化modelformset
- 25. 初始化使用文字
- 26. 使用SpringBoot初始化jOOQ
- 27. 使用XML初始化HashMap
- 28. 使用GoogleMapOptions初始化MapFragment
- 29. 使用初始化列表
- 30. 使用*這個初始化
,那麼什麼纔是UIManagedDocument的目的是什麼? –
'UIManagedDocument'(如果我沒有弄錯的話)是一個更廣泛的類,它幫助管理更多基於文檔的應用程序的Core Data。你可以在這裏閱讀更多關於它的信息(https://developer.apple.com/library/IOS/documentation/UIKit/Reference/UIManagedDocument_Class/index.html),但主要的一點是,這不是必要的案件。 – bauerMusic