2

各 NSManagedObject にいくつかのカスタム メソッドを直接配置したいと思います。「計算されたフィールド」と考えてください。これらのメソッドは、エンティティの永続的な値に基づいて読み取り専用の計算された値を提供します。これは、この質問と同じです。

Xcode New File... Wizard を使用して、エンティティごとに NSManagedObject サブクラスを作成しています。アクセサーを自動作成するシステムの恩恵を受けようとしています。例えば:

コア データ エンティティ: 「サイト」

@interface Site : NSManagedObject

エンティティに新しい属性を追加し続けると、ウィザードを使用して対応する NSManagedObjects を置き換えます。各ファイルが置き換えられると、カスタム メソッドが失われます。

ウィザードを引き続き利用できるようにするには、別の場所でカスタム メソッドを作成する必要がありますか? または、NSManagedObject のメソッドを保持し、新しい属性のアクセサーを手動で追加する必要がありますか? 別のアプローチはありますか?

4

2 に答える 2

3

NSManagedObjectサブクラスにカテゴリを作成します。

  • [新しいファイル...]ダイアログで、[Objective-Cカテゴリ]を選択します。
  • 「サイト」にカテゴリ「CustomMethods」を作成します。
  • Xcodeは、対応する実装のファイルSite + CustomMethods.h@interface Site (CustomMethods)を作成し、、およびSite+CustomMethods.mを宣言します。
  • カスタムメソッドをカテゴリに追加します。

XcodeでSite.mSite.hを再作成しても、これらのファイルは上書きされません。

すべてのカテゴリメソッドは、クラス自体で宣言されているかのように使用できます。カテゴリで実行できない唯一のことは、新しいインスタンス変数を追加することです。

于 2012-07-27T20:03:02.540 に答える
0

ウィザードを使用して最初の管理対象オブジェクトを作成したら、通常はそれらを手動で変更します。

これを行う別の方法は、ウィザードで生成されたクラス ファイルのサブクラスを作成し、これらを使用することです。それらが再生成されると、上書きされたクラス ファイルではなく、すべてのカスタム コードがサブクラスになります。

于 2012-07-27T19:57:13.453 に答える