私は非常に大きなプロジェクトを持っており、私はリファクタリングセッションに参加しています。最初は私のアイデアは良く聞こえましたが、今は私は固執し混乱していますし、git rollbackの前には近くにあります。あなたたちは私の最後のチャンスです。CoreData-Stack全体をフレームワークに入れることは可能ですか?
CoreDataに存在するいくつかのデータを表示するGUIアプリケーションを作成しました。バックグラウンドプロセスは、ネットワークから時々データをフェッチして、CoreDataに入れます。
私は、CoreDataと<をリクエストしてGUIに表示させています。 それは私たちのために非常に良い作品です。それはまっすぐで、特別なものはありません。私の会社は1月からこのアプリケーションをプログラミングしており、要求側とデータ側は膨大になっています。 100%のテストカバレッジもあります! \ o /。そのプロジェクトで働くことは素晴らしいことかもしれません。もし... GUIの事柄が分かれば...。 時間が経つにつれ、開発チームを2つの部分に分割する必要があります.1つはgui(および同じデータモデルに基づくいくつかのGUIアプリケーション)です。もう1つはRequest-and-CoreDate部分です。私のモデルのインターフェースはきれいなエントリーポイントを持っているので、RequestとCoreDataのセクションを私のワークスペースのライブラリプロジェクトに移動するのは簡単だと思いました。
hm、いいえ!
私はKit.xcdatamodeldを新しいライブラリプロジェクトに入れました。私はすべてのモデルを生成し、メインアプリケーションのすべてのコードをlibに追加します。私はすべての問題を解決し、最初の基本テストを新しいプロジェクトに移し始めました。
私は、ApplicationDelegateのmanagedObjectModel部分を新しいプロジェクトのDataControllerに配置しました。新しいクラスからこのmanagedObjectを使用するように最初の呼び出しを変更しました。
let dc = DataController()
_ = GlobalScope(context: dc.managedObjectContext!)
エラーがmanagedObjectModelに発生するよりも、私はシンプルなエンティティを保存する必要がある最初のテストを実行すると:
lazy var managedObjectModel: NSManagedObjectModel = {
// The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model.
let modelURL = NSBundle.mainBundle().URLForResource(" <LibName>Kit", withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()
fatal error: unexpectedly found nil while unwrapping an Optional value
、私の質問は:それは何をすることは可能ですCoreData全体をフレームワークに入れる?自分のGUIアプリケーションでデータモデルやリクエストがありませんか?計画はフレームワークを組み込み、私のモデルのgetXY()setXY()関数を使用することではありません。また、ネットワークバックグラウンドフェッチ全体がフレームワーク内の場所である必要があります。 しかし、フレームワークにmainBundleがないことを縫い合わせています。どのようにデータベースを正しい方法で入手するのですか?
ありがとうございました。 ps
これはフレームワークか静的ライブラリですか?代わりにbundleWithIdentifierまたはbundleForClassを使用します。 – Wain
ちょっとしたワイン、フレームワーク –
フレームワークを扱うときにどのバンドルを使用するか注意してください。**メインバンドル**はあなたのものを指します。 main ** abc.app **、そこに含まれるフレームワークではありません。クラスなどのフレームワークを使いたいかもしれません。 – Jay