-1

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

  1. 用户必须使用其登录名和密码登录。因此,如果他忘记密码,则有机会通过在秘密问题上输入正确答案来创建新的通行证。
  2. 应用程序将存储联系人。每个联系人都有姓名、姓氏、照片、电话和地图注释的coollection。
  3. 用户可以创建一些组(如家人、朋友...)

所以我创建这个应用程序是为了理解objective-c的基础知识,也许我的应用程序中没有逻辑。请检查我的实体,也许我允许失误。

第一实体联系人

在此处输入图像描述

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

第二实体

在此处输入图像描述

  • 联系人 - 包含联系人 ID 的数组,属于该组
  • id - 组数
  • title - 它是组的名称(如 Family、Friends...)

第三实体登录

在此处输入图像描述

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

关系

在此处输入图像描述

所以每个登录名可以有一些组,但每个组将只属于一个登录名。所以我为组关系创建了“多对多关系” 。所以每个组都包含一些联系人,并且联系人可以在一些不同的组中——我创建了多对多的关系。

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

  • 联系人中的“id”
  • 中的“id”
  • 登录中的“登录名”,“密码
  • 在联系中的“toGroups”关系
  • 组中的关系“toLogin”中

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

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

4

1 回答 1

1

我注意到的几件事——

  1. 您无需使用“id”属性。大多数数据库都计划将这些用于主/外键管理,但如果您设置了关系,核心数据将为您管理这一切。同样通过这种逻辑,您不需要属性来手动创建该关系(即组中的“联系人”和登录中的“组”
  2. 您确定要将字典和/或数组存储在实体中吗?这些听起来像是另一个独立的实体,例如用于地图注释的实体。然后,您将建立从原始对象到新对象的一对多关系。
  3. 存储为二进制数据的图像并不是解决此问题的最有效方法。最好使用应用程序沙箱提供的文件系统。前几天刚看到一个类似的问题在iOS设备上本地存储图像
于 2013-01-27T15:27:39.530 回答