具有多个天气数据时间框架的 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】:目前Minutely
和Hourly
几乎没有任何价值,因为它们没有任何属性或关系。添加type
属性通常也比添加多个子实体更容易,因为您可以在进行提取时使用谓词轻松过滤type
。如果您将来要添加更多内容,则可能需要保留子实体。
删除实体后,您就只有 Location
和 Data
有关系。您应该使这种关系成为双向的,以便 Core Data 可以更好地管理数据存储内容。 (这适用于所有关系,即使您保留已有的子实体)。
除此之外,很好:-)
【讨论】:
嗨 Wain,感谢您的及时回复 :) 我更新了屏幕截图以提供基于 JSON 结果的最终属性。问题1:当您说“当您将来要添加更多时,可能会有案例”,您的意思是添加更多时间范围吗? 不,我的意思是添加更多属性。如果所有Location
子实体都将与data
建立关系,那么您应该将其移动到Location
实体(并真正添加反向关系)。根据您当前的模型内容,我将只有 Location
和 Data
实体...
所以为了确保我理解正确,我将有两个实体,位置和数据,并且在数据中我还将有一个类型属性,该属性将具有时间范围和获取数据的时间稍后从这张表中,我可以根据我询问的时间范围(比如当前或每小时)进行谓词。对吗?
type
将进入Location
(作为所有子实体的替代品)。而且我还希望关系应该是 1 Location
到许多 Data
。考虑看看 RestKit,它可以帮助你将 JSON 映射到你的模型。
迭代这个想法总是很有趣。更仔细地查看 JSON,我实际上会选择 3 个实体。 Location
、TimeBox
(与type
、icon
、summary
)和Data
。 1:Location
和 TimeBox
之间的许多。 1:TimeBox
和 Data
之间的许多。每个位置都有很多时间框,每个时间框都有很多数据点。以上是关于具有多个天气数据时间框架的 CoreData 对象建模的主要内容,如果未能解决你的问题,请参考以下文章
iOS Core Data:使用 Foundation 对象添加属性