ios - CoreData 临时关系示例

标签 ios objective-c core-data relationship transient

有人有关于如何在 CoreData 中对 transient 对一关系进行建模和编码的示例吗?例如,我有 2 个具有一对多关系的实体。医生和约会。现在我想在医生实体上建立一个名为 mostRecentAppointment 的临时关系。在 xcode 设计器中建模很简单,但我不确定实现方面。我还应该实现逆向吗?看起来很傻。

最佳答案

看看我最近写的这段代码,在 NSManagedObject 中缓存图像:

首先,您在模型中定义了一个 transient 属性(请注意,如果您的 transient 属性指向的对象类型不是 CoreData 支持的对象类型,您将保留为“未定义”在模型中)

enter image description here

然后,您为该实体重新生成 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/

相关文章:

iphone - 如何从 iPhone 的字符串中删除标签?

iphone - 检查URL请求是否已在NSOperationQueue中

core-data - 核心数据 : NSPredicate for many-to-many relationship. ("to-many key not allowed here")

objective-c - 获取关系对象

ios - 使用多个 NSManagedObject

iphone - 添加 ViewController 与编辑 ViewController

ios - Navigation Bar 消失 Change Root ViewController 然后重新赋值

UIButton 上的 iOS 线性渐变无法正确显示

ios - 更改播放按钮以暂停点击

ios - 不隐藏在键盘下方的文本字段动画,在 IOS 7 中的模拟和实际设备中表现不同