有人有关于如何在 CoreData 中对 transient 对一关系进行建模和编码的示例吗?例如,我有 2 个具有一对多关系的实体。医生和约会。现在我想在医生实体上建立一个名为 mostRecentAppointment 的临时关系。在 xcode 设计器中建模很简单,但我不确定实现方面。我还应该实现逆向吗?看起来很傻。
最佳答案
看看我最近写的这段代码,在 NSManagedObject 中缓存图像:
首先,您在模型中定义了一个 transient 属性(请注意,如果您的 transient 属性指向的对象类型不是 CoreData 支持的对象类型,您将保留为“未定义
”在模型中)
然后,您为该实体重新生成 NSManagedObject 子类,或者只是手动添加新属性,头文件应如下所示:
@interface Card : NSManagedObject
@property (nonatomic, retain) NSString * imagePath;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * order;
@property (nonatomic, retain) NSString * displayName;
@property (nonatomic, retain) UIImage *displayImage;
@end
这里我们把transient属性的class改成实际的class类型
例如displayImage
这里的类型是UIImage
。
在实现文件(或扩展类)中,您为 transient 属性实现 getter/setter:
-(UIImage*)displayImage{
//Get Value
[self willAccessValueForKey:@"displayImage"];
UIImage *img = (UIImage*)[self primitiveValueForKey:@"displayImage"];
[self didAccessValueForKey:@"displayImage"];
if (img == nil) {
if ([self imagePath]) { //That is a non-transient property on the object
img = [UIImage imageWithContentsOfFile:self.imagePath];
//Set Value
[self setPrimitiveValue:img forKey:@"displayImage"];
}
}
return img;
}
希望对你有帮助。
关于ios - CoreData 临时关系示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280483/