我的应用程序的ManagedObjectModel

时间:2013-01-27 14:57:01

标签: iphone ios objective-c core-data

我在developer.apple.com上阅读了一些关于Core Data的文章和信息。现在我想为我的应用程序创建ManagedObjectModel。所以我需要帮助 - 因为这是我对数据库的首次规划。所以我的应用程序将有下一个选项

  1. 用户必须使用他的登录名和密码登录。因此,如果他忘记了密码,就有可能通过在秘密问题上输入正确的答案来创建新的通行证。
  2. 应用程序将存储联系人。每个联系人都有姓名,姓名,照片,电话和地图注释的冷却。
  3. 用户可以创建一些组(如家人,朋友......)
  4. 所以这个我创建的应用程序用于理解objective-c的基础知识,也许我的应用程序中没有逻辑。 请检查我的实体,也许我允许犯错误。

    第一个实体联系

    enter image description here

    • id - 联系人数量。
    • 图片 - 我会在那里存储数组。因此,如果图像< 200 Kb我将其插入数据库,如果更多,我将保存此图像的路径
    • 地图 - 地图注释字典
    • 姓名
    • 手机 - 电话号码

    第二个实体群组

    enter image description here

    • contacts - 包含属于此组的联系人ID的数组
    • id - 群组数
    • title - 这是组的名称(如Family,Friends ...)

    第三个实体登录

    enter image description here

    • groups - 包含属于该组的ID的数组
    • 登录
    • 密码
    • 秘密答案 - 回答秘密问题
    • 秘密问题

    关系

    enter image description here

    因此每个登录都可以有一些组,但每个组只属于一个登录。因此,我为群组关系创建了“多对多关系”。所以每个小组都包含一些联系人和联系人可以在一些不同的gruops - 我创建多对多的关系。

    关于财产“可选”。我明白,如果不检查 - 这个属性或关系必须是。所以我删除了

    的这个属性
      联系 中的
    • “id”
    • 中的“id”
    • “登录”,登录
    • 中的“密码”
    • 联系
    • 中的“toGroups”关系中
    • 群组
    • 中的关系“toLogin”

    关于“删除规则”。我想如果我删除一些登录所有组和属于此登录名的联系人必须删除。我可以在登录中为关系“群组”选择“级联”,但它只会删除群组而不会删除联系人。我不能为关系“toContact”做这样的事情,因为如果我删除某些组,它将删除联系人,但其他组仍然可以拥有此联系人。所以也许我必须在登录中创建属性“联系人”,这将是联系人数组,并创建与联系人的关系,如果我删除登录属于它的所有组和联系人,将被删除。

    PS对不起我是新手,我的问题对你来说可能很有趣,但我需要帮助

1 个答案:

答案 0 :(得分:1)

我注意到的一些事情 -

  1. 您无需使用'id'属性。大多数数据库都计划用于主/外键管理,但是如果您已建立关系,核心数据将为您管理这一切。同样通过这种逻辑,您不需要属性来手动创建该关系(即组中的“联系人”和登录中的“组”
  2. 您确定要在实体中存储词典和/或数组吗?这听起来像另一个独立的实体,例如用于地图注释的实体。然后,您将构建从原始对象到新对象的一对多关系。
  3. 存储为二进制数据的图像不是最有效的方法。最好使用app沙箱提供的文件系统。前几天刚看到一个类似的问题Storing images locally on an iOS device