0

R、G、Bが格納されている「Color」というエンティティと、必要に応じて彩度、UIColorなどを返すサブクラスがあります。最近、Colorエンティティをクラス「Color」にする必要があるコードを作成して、メソッドを呼び出すことができるようにしました。

しかし、別の部分を壊したようです。

色を保存する前に、Colorクラスを使用して、Colorクラスのメソッドに基づいて保存する色を決定します。これは私が問題にぶつかっているところです。

Color *color = [[Color alloc] initWithColor:[UIColor whiteColor]];
if (color.saturation > 0.2) {
    [self addOrIncrementColor:color];
}

ifステートメントで、デバッガーは次のように表示します。

color   Color * 0x1f532740
NSManagedObject NSManagedObject 
red CGFloat 0.392157
green   CGFloat 0.443137
blue    CGFloat 0.203922
count   __NSCFNumber *  0x1f559d00
color   UIDeviceRGBColor *  0x200e8f10
saturation  CGFloat 0.539823

ただし、Colorオブジェクトの説明を印刷すると、次のようになります。

Color: 0x1f532740 (entity: (null); id: (null) ; data: {})

もちろん、これは、ローカルに設定されている場合でも、カラーオブジェクトをnull情報を持つaddOrIncrement:メソッドに渡します。

これを機能させる方法はありますか?

4

1 に答える 1

1

NSManagedObject通常のオブジェクトの場合のように sを使用するのは正常に見えません(たとえば、通常のalloc init.NSManagedObjectNSManagedObjectContext

そうは言っても、NSManagedObjectに保存されない一時的なものだけが必要なcontext場合は、通常どおりに作成しますが、 nil を使用しますcontext

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Color" inManagedObjectContext:managedObjectContext];
Color *color = [[Color alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
if (color.saturation > 0.2) {
    ...
}

参考までに、こちらの他の投稿をご覧ください。

于 2012-09-13T04:58:39.733 に答える