1

コア データを扱うとき、マネージド オブジェクトではないモデル クラスを持つ価値があるかどうか、常に疑問に思っていました。これらのオブジェクトに永続性を与える代わりに、コア データ ストアを処理するデータ マネージャー クラスが、クラス (複数可) のインスタンスをコア データストアに書き込む方法を知っている場合、アプリがそれらのインスタンスを永続性から呼び戻したい場合、データストア管理オブジェクト コンテキストなしでこれらのオブジェクトのインスタンスを作成するメソッドを持っていますか?

私がコア データを扱う方法を学んだのは、xCode が提供するマネージド オブジェクト モデルを使用してモデル クラスを作成し、それらのクラスのインスタンスを作成または破棄するたびに、それらを通常の種類のオブジェクト インスタンスではなく、マネージド オブジェクトとして扱うことです。他のほとんどのクラスが作成します。管理対象オブジェクトを変更する必要があるときはいつでも、管理対象オブジェクトのコンテキストを介して行う必要があるため、これはやや複雑で難しいと常に感じていました。これは結局のところ単なるデータベースです。

質問がわかりにくい場合は申し訳ありません。明確化が必要な場合は、喜んで承ります。Core Data について議論するのはやや難しいと思います。

4

1 に答える 1

3

Core Data に大きく依存するアプリがあります。

いいえ、管理されていないバージョンのモデル オブジェクトを使用する価値はないと思います。複雑さが増すだけで (大量の余分なコードを記述する必要があります)、Core Data を使用する利点の一部 (主にオブジェクトの遅延読み込み) が失われます。

管理オブジェクト コンテキストを介して管理オブジェクトを作成および破棄しますが、それ以外は、管理オブジェクトは非管理オブジェクトと同じように動作します。たとえば、管理オブジェクト コンテキストで何もせずに、管理オブジェクトのプロパティを変更できます。

Core Data は実際にはデータベースではありません。ORMに似ています (ただし、Apple は ORM とは呼んでいません)。これは、オブジェクトを永続ストアに保存したり、永続ストアから取得したりする方法であり、データベースにデータを保存する以上のことを行います。

管理されていないデータ モデルが本当に必要な場合は、Core Data をまったく使用しないことをお勧めします。Gus Mueller のFMDBや Marco Arment のFCModelのようなものです。

確かに、Core Data のいくつかの側面は理解しにくいものです。しかし、一度理解してしまえば、それほど悪くはなく、データベースを使用するよりも特定のことがずっと簡単になります。

Core Data Programming Guideを読むことができますが、個人的には、最初にそれについて学んだときはあまり運がありませんでした. ただし、優れた Core Data の本はおそらく良いでしょう。初めて学習したとき、Core Data for iOSを読み、非常に役立つことがわかりました。

于 2015-08-20T02:06:15.357 に答える