【问题标题】:How do I map relationships in Custom NSManagedObject class如何在自定义 NSManagedObject 类中映射关系
【发布时间】:2014-11-06 20:17:32
【问题描述】:

我有两个实体:农民、牲畜。农民与牲畜是一对多的关系。这样每个农夫就可能有姓名、地​​址、用户ID、猪集、鸡集、牛集。

我需要为农民创建一个自定义托管对象类

@interface ManagedFarmer : NSManagedObject

@property (nonatomic, strong) NSString *name;

@property (nonatomic, strong) NSDate *date;

@property (nonatomic, strong) NSString *address;

@property (nonatomic, strong) NSNumber *userid;

@property (nonatomic, strong) NSArray *cows;//? set of cows: relationship to Livestock entity, designated cows

@property (nonatomic, strong) NSArray *chickens;//? 1-to-many relationship to Livestock entity, designated as chickens: 
@property (nonatomic, strong) NSArray *pigs;
  • NSArray 是表示关系数据的正确方式吗?
  • 当我通过用户 ID 获取农民时,是否会自动发生级联,以便我也免费获得属于该农民的所有 Livestock 实体?

【问题讨论】:

  • 单击 Coredata 文件 .xcdatamodald 并在下方您可以看到编辑器样式,在模态图标上单击 cilck,您会在那里找到表格。然后在表之间创建所需的关系,然后创建 NSManagedObject 类。完成!

标签: ios objective-c core-data xcode5


【解决方案1】:

所以 NSManagedObject 与 Core Data 一起使用。创建您的模型,在该模型中创建关系,然后让 Xcode 为您创建 NSManagedObject 类。

【讨论】:

    【解决方案2】:

    “NSArray 表示关系数据的正确方式?”

    NSSet 用于对NSManagedObject 子类中的关系进行建模。 NSArray 用于获取属性,是一种弱关系。

    通常您会使用Core Data Model Editor built into Xcode 来修改您的模型,然后让Xcode 生成NSManagedObject 子类文件作为模板供您使用。这将自动为关系生成NSSet 属性(但遗憾的是,will not automatically generate properties for fetched properties)。

    “当我通过用户 ID 获取农民时,是否会自动发生级联,这样我也可以免费获得属于该农民的所有 Livestock 实体?”

    当获取对象时,它们的关系是“错误”。对象图将仅具有关系目标处的对象的占位符,直到它们被访问。这有助于限制内存中对象图的大小,这是 Core Data 非常擅长的。您可以通过使用setRelationshipKeyPathsForPrefetching:为获取请求设置适当的关系键路径来选择在获取中包含关系目标。

    【讨论】:

      【解决方案3】:

      以下链接有一个基本教程,可以满足您的要求:http://code.tutsplus.com/tutorials/core-data-from-scratch-subclassing-nsmanagedobject--cms-21880

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-31
        • 2023-04-02
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        • 2011-10-15
        • 2017-10-11
        • 2019-11-16
        相关资源
        最近更新 更多