核心数据中的数据建模,(包含许多孩子的文件夹和文档等)

时间:2010-08-03 17:21:11

标签: iphone cocoa cocoa-touch core-data

我曾多次使用CoreData,但数据建模非常简单。这次我应该实现以下内容:

  • 用户可以创建文档和文件夹(它们不必是真正的文件夹/目录)。
  • 文件夹可以包含文档或其他文件夹
  • 文件有:
    • 1 Title,
    • 1说明和
    • 8个孩子
  • 每个孩子还有一个标题和一个描述,可能有8个孩子 (可选)
  • 这可以是用户期望的多个级别(递归)。

我不确定如何在CoreData中表达这一点。有人可以帮忙吗? 现在我想到:

“Child”实体,其中“Title”“Description”作为属性,“Children”作为关系(一对多)。 “文件”实体,“IsFolder”作为布尔属性,“Documents”作为关系(一对多,指向“Child”)

我不确定这是否在CoreData中实现了上述结构。 我走在正确的道路上?在CoreData中重新建模数据结构可能很痛苦(我听说过)所以我希望从一开始就有一个好的结构。我希望我能从你那里得到一些建议;)

提前致谢。

1 个答案:

答案 0 :(得分:2)

你可能想要这样的东西(伪代码):

Folder{
    parent<<--(required,nullify)-->Folder.folders
    folders<--(optional,cascade)-->>Folder.parent
    documents<--(optional,cascade)-->>Document.folder
}

Document{
    title:string
    descriptionText:string
    parent<<--(optional,nullify)-->Document.children
    children<--(optional,cascade)-->>Document.parent
    folder<<--(optional,nullify)-->Folder.document
}

(警告:不要使用“description”作为属性名.NSObject有一个description方法,因此NSObject的每个子类都会响应description消息。它会导致所有类型如果您有一个同名的属性访问器,则会出现难看的问题。)