objective-c - 使用 Core Data Entity 的子类而不存储在 Core Data 中

标签 objective-c ios

我有一个名为“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/

相关文章:

objective-c - XCode 4.0 中的 "Incomplete implementation"警告

ios - UISplitViewController 在纵向显示细节上方的主视图

objective-c - 声明一个 block 方法参数而不使用 typedef

ios - 如何将任何 View 置于从代码获取其位置的任何其他 View 下方

iphone - 当用户进入 UITableView 的编辑模式时如何更改披露样式?

ios - 完成后的 UIView 动画无法正常工作

iphone - 在iPhone上使用自定义阿拉伯字体时出现问题

ios - 为什么点击搜索栏时 UISearchController 上有一条白线?

iphone - iOS上的文件关联-从Safari打开纯文本文件

ios - 如何将水平分页捕捉到像 App Store 这样的多行 Collection View ?