没有属性的 CoreData 模型超级实体

Posted

技术标签:

【中文标题】没有属性的 CoreData 模型超级实体【英文标题】:CoreData Model Super Entity without Attributes 【发布时间】:2014-04-02 11:15:15 【问题描述】:

我正在创建一个核心数据项目。我看过很多教程和阅读文档。我可以创建一个NSManagedObjectNSManagedObjectContextNSFetchRequest 没问题。我想确保我以正确的方式创建我的项目:

我的应用会列出最喜欢的足球和篮球运动员;

我创建了 3 个实体;

    -PlayersList 实体 - 这里没有属性。因为我想使用足球和篮球实体属性 -Football 实体 - 属性 = PlayerName -Basketball 实体 - 属性 = basketPlayerName

我添加了关系 PlayerList 到 Many 到 Footballs 和 ofc footballPlayerList 单一关系。 PlayerList to Many to Basketballs 和 basketball to PlayerList 单身关系。并将它们设置为逆数。

我的PlayersList 中有一个NSSet。我应该使用这个吗?

我有一个PlayersListTableViewController。我可以获取Football 实体并列出我的tableview 或Basketball 实体。但我无法获取PlayersList Entity,因为它没有任何属性。主要问题是:

如何在我的PlayersListTableViewController 中列出所有玩家姓名?

如何使用来自 1 个超级实体的 2 个实体属性?比如footPlayerNamebasketPlayerName

【问题讨论】:

一张图片描绘一千个单词...链接到您的数据模型的图片。 s13.postimg.org/c8f48sj6f/image.jpg 这是我的数据模型。如果我做这个单人实体,我怎么知道哪个是篮球或哪个是足球?我怎样才能将这些数据从另一个控制器列出给只有足球运动员?这是一个简单的概念,我将添加另一个属性,例如 footballerAge 或 footballerFoot。如果我做那个单一的玩家实体,它包含太多的属性。我只想显示 1 个 tableviewcontroleler 的所有属性。 如果我不创建 PlayerList 实体,如何从我的 tableview 中列出另一个实体属性。我可以用我的 fetchResultsController 获取和列出足球实体属性,这样我就无法获取篮球实体属性。因为我获取了足球实体。 【参考方案1】:

如果您不打算添加任何属性,则不清楚为什么会有PlayersList 实体。它应该是带有teamNameTeam 实体,或者PlayersList 应该带有purpose 或类似的东西。

另外,为不同类型的玩家设置多个实体是多余的。您应该有一个带有 type 属性的 Player 实体,该属性是您根据不同类型的玩家设置的。然后在您的 fetch 谓词中使用 type

现在您只需获取Player 实体并指定适当的type。如果您未指定 type 谓词,则将返回所有 Players(如果它们看起来不同,您可以使用 type 显示为足球/篮球)。


从您更新的 cmets 中,您无法以 1 组方式做所有您想做的事情。

如果您想要多个实体类型的单个列表,那么获取结果控制器不是一个好的选择。您可以使用 2 个 FRC 并分别管理表上的不同部分(修改部分编号),但通常执行 2 个提取请求并将结果合并到一个数组中更容易。

【讨论】:

嗯。首先。感谢您的回答并编辑了我的问题。请考虑这个项目。我想列出所有车辆。用户将用他们的名字添加汽车和自行车。我想用我的 TableViewController 列出它们。用户可以根据需要查看他的汽车和自行车,可以查看详细信息或添加详细信息。如果你想创建这个项目,你会怎么做?你会创建一个 Vehicles 实体吗?如果没有。如何从 TableViewController 中列出这两个不同的实体?再次非常感谢您。 这取决于整体要求和潜在实体之间的差异。通常多个实体会起作用,并且不会显示为单个列表,而是显示在分类列表中(这对用户来说是合乎逻辑的),因此您不需要以讨论的方式组合。 嗯。那么你能举一个车辆项目的例子吗? 例如,您将有一个显示汽车的选项卡和一个显示您的自行车的选项卡,因此它们在 UI 上逻辑上是分开的。如果您确实在 1 个列表中显示,您将首先显示汽车,然后是自行车(因此在引擎盖下它仍然不需要是一个列表,它可以是在表的 2 个不同部分中使用的 2 个列表......)跨度>

以上是关于没有属性的 CoreData 模型超级实体的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 自动迁移不会在我的新模型中创建新实体

Core Data 轻量级迁移 - 现有实体是不是添加了新属性?

如何从 Core Data 中的关系相关实体获取属性?

Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性

Core Data 中线程安全的唯一实体实例

是否有理由不在 Core Data 实体中使用相同的属性名称?