小编Jos*_*low的帖子

如何使用通用关系构建Core Data中的实体?

假设您需要使用可与多个其他类型的实体关联的实体构建应用程序.例如,您有一个Picture实体,可以与Meal实体,Person实体,Boardroom实体,Furniture实体等相关联.我可以想到许多不同的方法来解决这个问题,但是 - 也许是因为我是Core Data的新手 - 我对其中任何一个都不满意.

想到的最明显的方法是简单地创建Picture和支持相关图片的每个实体之间的关系,但这看起来很草率,因为图片将有多个"空指针".

另一种可能性是创造一种超级性 - 可想象 - 或者某种东西.支持相关图片的每个实体都是Pictureable的子实体,而Picture本身将与Pictureable一对一.我发现这种方法令人不安,因为它不能在项目的上下文中多次使用(因为Core Data不支持多重继承)以及Core Data似乎为任何给定的根实体创建一个表的方式 - 假设一个SQLite支持 - 让我更倾向于在一个共同的超级大国的保护下对一大堆不同的子实体进行分组(我意识到沿着这些方向思考可能会导致过早的优化,所以如果我是一个狡猾的人,请告诉我).

第三种方法是为Picture创建一个由"type"和"UID"组成的复合键.假设我的数据模型中的每个实体都有一个UID,我可以使用此密钥从Picture实例派生关联的托管对象,反之亦然.这种方法让我感到担心,因为听起来它总体来说可能会变慢 ; 它对我来说也不够原生.

第四种方法 - 我倾向于我正在研究的应用程序 - 正在创建图片和X的子实体(其中X是餐,人,会议室等)并创建一个 - - 在这两个子实体之间.虽然这种方法似乎是所有邪恶中较小的一种,但对于我未经训练的眼睛来说它似乎仍然是深奥的,所以我想知道是否有更好的方法.

编辑1:在最后一段,我的意思是说我倾向于创造子实体只是对图片,不是两个图片和X.

cocoa core-data objective-c ios

11
推荐指数
1
解决办法
1540
查看次数


标签 统计

core-data ×2

ios ×2

objective-c ×2

cocoa ×1

cocoa-touch ×1