我有一个关于 Core Data 建模的问题想问。
我正在开发一款帮助用户内存诗歌的应用程序。本诗分述如下:
诗分多章
每章分多行
现在,正因为如此,我想我会创建两个实体如下:
- 章节实体,具有以下属性:ChapterNumber、ChapterTitle 和 LineEntity。
- LineEntity,具有属性:ChapterNumber、LineNumber、LineSegment(每行分为a、b两部分)、LineText
因为我计划同时为用户播放音频,所以我还需要对音频文件的引用,这就是为什么我认为我也需要一个 AudioFile 实体。因此我也会有:
- AudioFile 实体,具有以下属性:ChapterNumber、LineNumber、Start(相关音频开始的时间点)、End(相关音频结束的时间点),可能还有 fileName。我有一个包含整个音频的长文件,但是,我想知道是否应该将音频文件分解成单独的组件,其中每个文件代表诗中的每一行。我个人不确定这是否是正确的方法。
因此,我的章节实体将调用 Line 实体的集合,而每个 line 对象又将引用一个音频实体。这有意义吗?
最佳答案
我可以想象,每首诗都有一个音频文件,每个行实体都应该引用该音频文件的一部分。我将创建该实体“AudioFile”,但我将其称为“AudioFileSplit”(如您所说)字段:ReferenceToLineEntity、Start、End。 请注意,您不需要此实体中的字段 ChapterNumber 或 LineNumber,因为此新实体已经引用了它们(使用行引用,您可以获得行数据、章节数据和诗歌数据)。
现在,您需要存储音频文件的 URL。可能您有一个名为“诗歌”的实体。如果每首诗都有一个音频文件,则应向诗歌实体添加一个新字段(可能是 AudioFileURL?)
恢复,我的模型会像
PoemEntity:[诗歌字段]、AudioFileURL、ReferenceToChapters
ChapterEntity:[章节字段],SingleReferenceToPoem,ReferenceToLines
LineEntity:[ine 的字段], SingleReferenceToChapter, SingleReferenceToAudioFileSplit
AudioFileSplit:SingleReferenceToLine,开始,结束
请注意 LineEntity 和 AudioFileSplit 之间的关系是 1:1,因此您甚至可以进一步简化它:
LineEntity:[行的字段],SingleReferenceToChapter,开始,结束。 (并且没有 AudioFileSplit 实体)
问候 ;)
关于ios - 尝试为 iOS 中的音频播放应用程序设计核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33623469/