2

我不确定其中哪一个是最佳做法,但这似乎是一种很常见的情况。我有一堆类,所以这是一个简化的情况:我有一个类叫做Recorder记录音频。它包含一系列设置,例如要录制的音量、要录制的文件等。

我想用核心数据保存它。

1)我应该让它成为一个托管对象吗?或者我应该编写一个单独的托管对象并添加一个类似getManagedObjectand initWithManagedObjectto的方法Recorder以便来回翻译。

2)或者我应该做Recorder一个托管对象。

请记住,我将子类Recorder化为AudioRecorder,因此核心数据模型必须反映该层次结构。

4

2 回答 2

2

我会说这两种解决方案都很好。

如果您只想将 Recorder 对象保存到持久存储中(例如,当您的应用程序被终止时您可以重新获取它)第一个解决方案很棒,但是您将有两个类:Recorder 和 RecorderCoreData 比方说。

如果您认为使用这两个类维护代码太复杂,则将 Recorder 类转换为托管对象。您唯一应该注意的是,由于 AudioRecorder 是 Recorder 的子类,AudioRecorder 也必须是一个托管对象!

但是没有完美的答案,只需根据您的需要选择一个看起来简单且更好的答案。

我希望它会帮助你。

于 2013-08-04T17:47:18.593 回答
1

NSManagedObject为您的 Recorder 对象使用一个。

这样做真的没有缺点。但是,您应该注意的一个设计警告是,您通常不应将自定义方法直接添加到托管对象类,否则当您通过数据模型编辑器。相反,您可以使用类扩展。

如果你发现你需要很多辅助方法或自定义属性——它们都不适合类扩展——那么你应该考虑创建一个代理或管理器对象来与你的记录器管理对象进行交互。

于 2013-08-04T20:22:21.727 回答