【问题标题】:Core Data saving array and dictionaries - best practices核心数据保存数组和字典 - 最佳实践
【发布时间】:2014-02-03 10:00:00
【问题描述】:

下面是我想在 Core data 中保存的数据类型的图示。每个城市都有很多学校,每个学校都有很多年级,每个年级都有很多学生和他们的详细信息。

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

如果我想为特定学校保存该特定年级的学生总数,这是一个好习惯吗?如果是,this link 提供的方法好用吗?

编辑:所有城市、所有学校和所有学生都具有相同的属性。而每个等级都有不同的属性。所以如果有10个等级的数据,那么可能有10种等级的数组。

另外,如果我在学校和学生之间有一对多的关系怎么办? IE 根据我的登录信息,我决定是否需要保存学校和成绩或学校和学生。现在的关系会如何?

【问题讨论】:

    标签: ios core-data nsmutablearray nskeyedarchiver


    【解决方案1】:

    您应该使用具有一对多关系的核心数据。 This 将是您的实体结构。

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

    更新 2:

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

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

    Here Grades 实体将包含如下条目:
    这些学生的物理成绩为 A。
    这些学生的生物成绩为 A。

    这些学生的物理成绩为 B。
    这些学生的生物成绩为 B。
    … … N 等等

    如果需要更多信息,请告诉我。

    【讨论】:

    • 但是在这种结构中,1 2、3 等没有隔离...如果 1 具有不同的属性,2 具有不同的属性等怎么办?请检查编辑
    • 这真的对我有帮助.. 还有一件事.. 如果我需要说 5 个等级类型,每个都有不同的属性.. 那么我将不得不使用 5 个差异实体作为类型 1 type2 等?
    • 还有一件事我想知道。请检查编辑。感谢您帮助我剖析核心数据...
    • @SharanyaKM.. 如果您有 5 个等级类型,则不需要 5 个实体。您需要 GradeType 实体中的 5 个条目/行..
    • @SharanyaKM.. 对于您更新的问题,您可以在单个模型中同时使用。您可以在同一模型中建立一对多关系黑白成绩和学生以及学校和学生。没有问题
    【解决方案2】:

    不要按照该链接中显示的方式进行操作。为每个实体(城市、学校、年级、学生)创建核心数据实体。添加这些实体之间的关系(例如:城市 ->> 学校,这意味着一对多的关系)。检查此链接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。花点时间进行核心数据建模。希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多