具有多个天气数据时间框架的 CoreData 对象建模

Posted

技术标签:

【中文标题】具有多个天气数据时间框架的 CoreData 对象建模【英文标题】:CoreData object modeling with multiple timeframes for weather data 【发布时间】:2014-02-20 21:14:30 【问题描述】:

我确实有一些 JSON 文件 http://jsonblob.com/530664b3e4b0237f7f82bdfa 我从 forecast.io 提取。

我有点困惑我应该如何创建我的 CoreData 实体和关系。

在下面的设置中,我将我的位置实体作为父实体,并为当前、每分钟、每小时、每日创建了一个单独的实体。但是,我决定最好将有关天气数据的所有信息保存在一个实体中,因此我为此创建了一个数据表,并将其与下图中的 Daily 和 Current 相关联。

在继续之前,我停顿了一下,想获得第二个意见。这是一种有效的前进方式吗?

编辑:根据 Wain 的回复,我将模型更改为此

【问题讨论】:

【参考方案1】:

目前MinutelyHourly 几乎没有任何价值,因为它们没有任何属性或关系。添加type 属性通常也比添加多个子实体更容易,因为您可以在进行提取时使用谓词轻松过滤type。如果您将来要添加更多内容,则可能需要保留子实体。

删除实体后,您就只有 LocationData 有关系。您应该使这种关系成为双向的,以便 Core Data 可以更好地管理数据存储内容。 (这适用于所有关系,即使您保留已有的子实体)。

除此之外,很好:-)

【讨论】:

嗨 Wain,感谢您的及时回复 :) 我更新了屏幕截图以提供基于 JSON 结果的最终属性。问题1:当您说“当您将来要添加更多时,可能会有案例”,您的意思是添加更多时间范围吗? 不,我的意思是添加更多属性。如果所有Location 子实体都将与data 建立关系,那么您应该将其移动到Location 实体(并真正添加反向关系)。根据您当前的模型内容,我将只有 LocationData 实体... 所以为了确保我理解正确,我将有两个实体,位置和数据,并且在数据中我还将有一个类型属性,该属性将具有时间范围和获取数据的时间稍后从这张表中,我可以根据我询问的时间范围(比如当前或每小时)进行谓词。对吗? type 将进入Location(作为所有子实体的替代品)。而且我还希望关系应该是 1 Location 到许多 Data。考虑看看 RestKit,它可以帮助你将 JSON 映射到你的模型。 迭代这个想法总是很有趣。更仔细地查看 JSON,我实际上会选择 3 个实体。 LocationTimeBox(与typeiconsummary)和Data。 1:LocationTimeBox 之间的许多。 1:TimeBoxData 之间的许多。每个位置都有很多时间框,每个时间框都有很多数据点。

以上是关于具有多个天气数据时间框架的 CoreData 对象建模的主要内容,如果未能解决你的问题,请参考以下文章

iOS Core Data:使用 Foundation 对象添加属性

iOS 高级框架的介绍

CoreData+RESTKit:来自 NSFetchedResultsController 的同一对象的多个副本

对象作为故障 - CoreData 关系

具有多个片段的活动的 MVP

以一个名称将多个对象保存到 coredata