我正在制作一个应用程序,为我学校的人们创建课程时间表。这是我对应用程序的粗略设计:
我希望我的 NSDocument 子类代表个人的时间表。这个想法是,他们打开一个文档,并且可以将池中的课程添加到他们的时间表中,然后保存、共享、打开等。因此时间表将存储在用户选择的外部文件中。
我想使用 CoreData 来存储学生可以选择的所有课程。这些不会随着时间表的创建和编辑而改变,而是可能仅在应用程序启动时检查课程信息的更新时改变。
这似乎是构建我的应用程序的逻辑方式。问题是,当我创建一个基于 NSDocument 的应用程序并检查use CoreData
box,它没有使其成为具有 CoreData 功能的基于 NSDocument 的应用程序,而是使其成为基于 NSPersistentDocument 的应用程序。
我认为这不是我想要的行为。有没有办法使用 CoreData,但仍然拥有基于 NSDocument 的应用程序?或者 NSPersistentDocument 到底是我应该使用的吗?我是否误解了整个 NS*Document 业务?您对我的应用程序结构有什么建议吗?
谢谢你的帮助!
是的,您可以使用 Core Data,而不使用NSPersistentDocument
。只需实例化NSPersistentStoreCoordinator
and NSManagedObjectContext
直接地。这是一些代码:如何创建 NSManagedObjectContext https://stackoverflow.com/questions/3597071/how-do-you-create-a-nsmanagedobjectcontext
如果您想在多个目录之间共享目录实例NSDocument
实例,并且不想将目录与每个文档一起保存,这是一个好方法。您的应用程序或应用程序委托可以负责加载课程目录,您的文档可以负责加载和保存单个学生的时间表。您必须自己实现这一点,例如使用带密钥的归档程序,或者自己编写一个 plist。
相反,如果您愿意,您可以进一步利用核心数据。代表学生日程NSManagedObject
并让NSPersistentDocument
处理加载和保存上下文。您可以免费获得许多有用的功能,例如撤消-重做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)