2010-08-03 33 views
0

我已经使用了CoreData几次,但数据建模非常简单。这次我应该执行以下操作:CoreData中的数据建模,(有很多孩子的文件夹和文档等)

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

我不知道如何在CoreData中表达这一点。有人可以在这里举手吗? 现在我想到:

“儿童”实体与“标题”“描述”作为属性和“儿童”作为关系(一对多)。 “文件”实体与“IsFolder”作为布尔属性和“文档”作为关系(一对多,指向“孩子”)

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

在此先感谢。

回答

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 
} 

(字警告:千万不要使用“说明”作为属性名NSObject的有description方法,以便NSObject中的每个子响应到description消息,如果你有一个同名的属性访问器,将导致各种难看的问题。)

+0

我正在处理类似的问题。我想知道为什么你的Document对象需要孩子和父母?我认为该文件夹将处理这些关系。 – 2011-04-17 03:47:08

+0

@nevan - 这是在父邮件的设计要求。显然,他不是仅仅建模一个简单的文件系统。出于某种原因,他的文件可以有儿童文件。我只是提供了符合要求的设计。您的要求可能会有所不同,但逻辑会类似。 – TechZen 2011-04-18 18:08:04

相关问题