核心数据保存阵列和词典 - 最佳实践

时间:2014-02-03 10:00:00

标签: ios core-data nsmutablearray nskeyedarchiver

下面是我想要在Core数据中保存的数据类型的说明。每个城市都有很多学校,每所学校都有很多年级,每个年级都有很多学生和他们的细节。

我已经阅读了有关核心数据的一些内容,并且已经开始了。但是我无法理解如何在核心数据中保存数组,并且在类似的插图情况下这是一个很好的方法吗?

如果我想为特定学校储存一系列特定年级的学生,这是一个好习惯吗?如果是,this link中提供的方法是否可以遵循?

enter image description here

编辑:所有城市,所有学校和所有学生都拥有相同的属性。而每个年级都有不同的属性。因此,如果有10个等级的数据,则可能有10种类型的数组。

另外,如果我在学校和学生之间有一对多的关系怎么办? IE取决于我的登录我决定是否需要保存学校和成绩或学校和学生。这段关系现在怎么样?

2 个答案:

答案 0 :(得分:1)

不要按照该链接中显示的方式进行操作。为每个人(城市,学校,年级,学生)创建核心数据实体。添加这些实体之间的关系(例如:城市 - >>学校,这意味着一对多的关系)。请查看此链接http://www.raywenderlich.com/14742/core-data-on-ios-5-tutorial-how-to-work-with-relations-and-predicates。请参阅苹果文档https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/articles/cdRelationships.html。花点时间进行核心数据建模。希望它有所帮助

答案 1 :(得分:1)

您应该使用具有一对多关系的核心数据。这个enter image description here将是您的实体结构。

<强>更新 如果您有多个具有不同属性的成绩,您可以定义另一个实体“GradeType”,其中包含每个成绩的详细信息 like this:

更新2:

让我在这种情况下写下考虑因素 1.一个城市可以有多所学校,但学校只能在一个城市(分支机构将有不同的地址;))。
2.学校可以提供多个科目。可以在多个城市教授相同的科目 3.学校可能包含多名学生,而学生只能在一所学校注册 4.学生可以注册多个科目,同一科目可以由多名学生注册 5.主题可以有多个等级(比如说4:A,B,C和D)。同样,许多学科将遵循相同的评分系统。(历史上的A,地质学中的B等) 6.学生可以有多个年级。但是,成绩的数量将等于他/她选择的科目数。

基于以上考虑,这将是您的dataModel。image

这里的Grades Entity会有这样的条目:
这些学生对物理A级进行评分 生物学A级由这些学生评分 ...

...

物理学B级由这些学生评分 生物学B级由这些学生评分 ... ...... N所以

如果需要更多信息,请与我们联系。