【发布时间】:2021-11-21 16:24:39
【问题描述】:
我正在制作一个应用程序,您可以在其中拥有多个期刊并为每个期刊设置不同的设置。我将Journal 和JournalSettings 数据存储在Core Data 中。现在我想允许用户编辑默认日志设置,以便新的Journals 具有默认日志设置所描述的JournalSettings。我使用 UserDefaults 来存储默认日志设置,因为它似乎是存储默认值的合适位置。我已经有一个 JournalSettingsView 来显示一个 JournalSettings 对象,我想重用这个视图来显示和编辑默认日记设置。所以我想从存储在 UserDefaults 中的默认日志设置数据创建一个 JournalSettings 实例,但我不想将这个新的 JournalSettings 实例保存到 Core Data,因为它只是已经存储在 UserDefaults 中的数据的副本.
我可以在不永远将其保存到 Core Data 的情况下创建一个 Core Data 对象实例吗?我以为我可以使用内存中的子 NSManagedObjectContext,我将创建与默认日记设置相对应的 JournalSettings,但据我了解,该子上下文将保存到其父上下文(我的主要核心数据上下文)。我还尝试在内存中创建一个单独的(不是子项)NSManagedObjectContext 来存储默认的JournalSettings,但随后我的应用程序因错误而崩溃:
Multiple NSEntityDescriptions claim the NSManagedObject subclass 'JournalSettings' so +entity is unable to disambiguate.
如果我无法在不保存的情况下创建 Core Data 对象,我仍然可以通过几种方法实现默认日志设置,但我不确定哪种方法是最佳做法:
- 将默认期刊设置移至 Core Data。这会很好用; UserDefaults 似乎是一个更适合存储默认值的地方。
-
创建一个新视图来显示/编辑默认日志设置,而不是重复使用
JournalSettingsView。这也可以,但是管理两个旨在显示同一事物的视图会有点烦人。视图之间唯一真正的区别是,一个以JournalSettings实例的形式获取其输入,而另一个将单独提供JournalSettings属性(如字体大小、期刊名称等)。
【问题讨论】:
-
我完全不明白您为什么需要 Core Data 来进行 JournalSettings,在我看来这是一个过于复杂的解决方案。