2

コア データの 1 対多の関係に NSSET の代わりにカスタム クラスを使用できるかどうか疑問に思っています。

たとえば、次のようにします。

@interface Company : NSManagedObject

@property (nonatomic, retain) NSString *companyId;
@property (nonatomic, retain) NSString *companyName;
@property (nonatomic, retain) NSSET *employees;

@end

次のような employees というクラスを作成したいと思います。

@interface Employees : NSSet

- (void) someCustomMethod;

@end

次に、会社の従業員の宣言を次のように変更します

@property (nonatomic, retain) Employees *employees;

正常にビルドされますが、Employees の someCustomMethod にアクセスしようとすると例外が発生します。おそらく、オブジェクトが Employees ではなく NSSET として作成されたためです。

だから私の質問は、私はこれを行うことができますか、そうであれば、従業員を NSSET ではなく従業員として作成するにはどうすればよいですか。

ありがとう、

AJ

4

1 に答える 1

2

私はそれが可能だとは思わない。Core Data アクセサー メソッドは実行時に動的に生成され、NSSet対多関係を表すために使用されます。

NSSetまた、ドキュメントではサブクラス化を推奨していないことに注意してください。

サブクラス化の必要性はほとんどないはずです。動作をカスタマイズする必要がある場合は、サブクラス化ではなく合成を検討する方がよい場合がよくあります。

以降:

追加したい動作が既存のクラスの動作を補足する場合は、 にカテゴリを記述できますNSSet。ただし、このカテゴリは、NSSet使用する のすべてのインスタンスに対して有効であり、意図しない結果になる可能性があることに注意してください。または、構成を使用して目的の動作を実現することもできます。

Companyあなたの場合、すべてで動作するカテゴリメソッドが回避策になるemployees 可能性があります。

于 2013-10-28T12:48:04.383 に答える