簡體   English   中英

帶有共享 CoreData 的 Xcode 項目,用於 iOS 和 MacOS 目標

[英]Xcode Project with shared CoreData for iOS & MacOS Targets

幾個月前,我開始研究需要 CoreData 實現的 MacOS 應用程序。 今天我開始研究一個相關的 iOS 應用程序,它基於相同的 Api,但依賴於相同的模型。 我在我的項目中添加了我的 iOS 目標,並共享了一些類(通過將它們添加到兩個目標中),包括 CoreData 堆棧:

  1. 我在兩個目標上都添加了我的app.xcdatamodeld

  2. 我在兩個目標上都添加了我的Object+CoreDataClass.swiftObject+CoreDataProperties.swift

在此處輸入圖片說明

  1. 我修改了我的ManagedObjectsController以支持 iOS 和 MacOS 實現

在此處輸入圖片說明

通過為 iOS 和 OSX 定義appDelegate ,我可以以相同的方式訪問它來獲取我的上下文let context = appDelegate.persistentContainer.viewContext

它工作正常,但我想知道我這樣做是否正確 這是在兩個目標之間相互訪問 appDelegate 實例的正確方法嗎?

我應該使用某種協議和通用類型嗎?

或者我應該為每個目標簡單地構建一個 ManagedObjectController 嗎?

謝謝

如果您有多個要同時支持通用功能的類,則聲明協議會有所幫助。 但是在這種情況下, UIApplicationNSApplication已經支持了你需要的常用功能! 問題是您需要訪問兩個不同的全局符號。

一個值得考慮的替代方案是:與其聲明兩個類IosAppDelegateMacAppDelegate不如聲明一個類AppDelegate ,然后將臟的#if代碼從ManagedObjectsController類移到AppDelegate 中 然后,這個AppDelegate可以在任何需要引用共享應用程序委托的地方使用。 這在大多數項目中不止幾個地方。

但是,如果您想盡快將您的產品推出市場,並且這個ManagedObjectsController是您需要共享應用程序委托的唯一地方,那么您的代碼就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM