我有一个名为“Color”的实体,它存储了 R、G、B,以及一个根据需要返回饱和度、UIColor 等的子类。我最近编写了一些代码,其中我需要将颜色实体作为“颜色”类,以便我可以调用它的方法。
但似乎又损坏了另一部分。
在存储颜色之前,我使用 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: 方法,即使它是本地设置的。
知道如何让它发挥作用吗?
最佳答案
像使用普通对象一样使用 NSManagedObject
看起来并不正常(例如使用通常的 alloc init
。相反,NSManagedObject
code> 应使用 NSManagedObjectContext
创建。
话虽这么说,如果您只想要一个不会保存到 context
的临时 NSManagedObject
,那么可以像平常一样创建它们,但使用 nil 上下文
:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Color" inManagedObjectContext:managedObjectContext];
Color *color = [[Color alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
if (color.saturation > 0.2) {
...
}
查看this other post供引用。
关于objective-c - 使用 Core Data Entity 的子类而不存储在 Core Data 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398594/