[英]Xcode Project with shared CoreData for iOS & MacOS Targets
幾個月前,我開始研究需要 CoreData 實現的 MacOS 應用程序。 今天我開始研究一個相關的 iOS 應用程序,它基於相同的 Api,但依賴於相同的模型。 我在我的項目中添加了我的 iOS 目標,並共享了一些類(通過將它們添加到兩個目標中),包括 CoreData 堆棧:
我在兩個目標上都添加了我的app.xcdatamodeld
我在兩個目標上都添加了我的Object+CoreDataClass.swift
和Object+CoreDataProperties.swift
ManagedObjectsController
以支持 iOS 和 MacOS 實現 通過為 iOS 和 OSX 定義appDelegate
,我可以以相同的方式訪問它來獲取我的上下文let context = appDelegate.persistentContainer.viewContext
它工作正常,但我想知道我這樣做是否正確。 這是在兩個目標之間相互訪問 appDelegate 實例的正確方法嗎?
我應該使用某種協議和通用類型嗎?
或者我應該為每個目標簡單地構建一個 ManagedObjectController 嗎?
謝謝
如果您有多個要同時支持通用功能的類,則聲明協議會有所幫助。 但是在這種情況下, UIApplication和NSApplication已經支持了你需要的常用功能! 問題是您需要訪問兩個不同的全局符號。
一個值得考慮的替代方案是:與其聲明兩個類IosAppDelegate和MacAppDelegate ,不如聲明一個類AppDelegate ,然后將臟的#if
代碼從ManagedObjectsController類移到AppDelegate 中。 然后,這個AppDelegate可以在任何需要引用共享應用程序委托的地方使用。 這在大多數項目中不止幾個地方。
但是,如果您想盡快將您的產品推出市場,並且這個ManagedObjectsController是您需要共享應用程序委托的唯一地方,那么您的代碼就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.