NSManagedObjectサブクラスインスタンスにリソースを注入する方法を試していますが、合理的な方法を見つけることができません。NSManagedObjectサブクラスインスタンスへのリソースの注入
簡単に言えば、エンティティの動作メソッドに必要なサービスを表すオブジェクトがあります。このサービスは、実行時に利用可能にする必要があります。
Plain-Old-Objective-C-Objectでは、このオブジェクトをコンストラクタ引数として渡すか、構築後にプロパティを設定するだけです。デリゲートが必要なオブジェクトの数と同様です。
しかし、awakeFromInsertとawakeFromFetchは明らかにパラメータを取りませんし、NSManagedObjectContextにフックしてNSManagedObjectsのポスト初期化を設定する場所を見つけることもできません。
誰にでも解決策がありますか?完全に不自然な例として
:これは総価格を計算するための最良の方法であるかどうかを無視して
@interface ProductEntity : NSManagedObject
@property (nonatomic, retain) NSNumber *unitPrice;
@property (nonatomic, retain) MyTaxCalculatorService *taxCalculatorService;
- (void)grossPriceForUnits:(NSUInteger)units;
@end
@implementation ProductEntity
@dynamic unitPrice;
@synthesize taxCalculatorService
- (void)grossPriceForUnits:(NSUInteger)units
{
return [self.taxCalculatorService grossAmountForUnitPrice:self.unitPrice quantity:units];
}
@end
(それは不自然な例だ)、どのように私はProductEntityにtaxCalculatorServiceインスタンスを取得するのでしょうか?私はinitをオーバーライドすることはできませんし、一貫して[entity setTaxCalculatorService:service]を呼び出すことができる場所を見つけることはできません。
思考?
"サービス"クラスの1つの共有インスタンスについて話していますか、各オブジェクトに独自のインスタンスがありますか? – jrturton
すべてのエンティティには、サービスインスタンスへの参照があります。いくつかはそのことを分かち合い、そうでない人もいます。私の考案した例では、いくつかの製品が他の製品とは異なる税計算方法を持っていると想像することができます。 –