将多个值作为数组存储在一个属性中,还是为它创建另一个表格更好?

问题描述:

我正在建立一个应用程序附加多张图片到录音。因此,存在具有“名称”和“URL”属性的“录音”实体。我想将多个图像附加到一个录音。将多个值作为数组存储在一个属性中,还是为它创建另一个表格更好?

  1. 那么我要添加另一个属性“图像”和存储图像数组?如果是,那怎么可能?

  2. 还是我创建另一个具有“图像”和“RecordingID”属性的实体,它具有所有录像的所有图像,并且每个图像都使用录制ID连接到它的录制内容?如果是,我如何为录音创建一个唯一的ID?

请回答哪一个更好的表现明智,并与您的选择解释其相关的问题。

+0

当你问“哪一个更好的表现明智”唯一正确的答案是:尝试两个和比较。 – alfasin

+0

@alfasin如果我知道我会如何。我对每种方法都有疑问。 –

这取决于您如何一如既往地使用数据。

如果您使用图像数组,Core Data将在您需要其中一个图像时立即加载它们。你要么同时在内存中存储所有图像,要么没有任何图像。如果你总是同时使用所有的图像,这可能是好的。

如果您使用单独的实体,则可以在需要时加载单个图像。它稍微复杂一些,但可以减少内存需求。如果您决定每个图像需要更多元数据(例如创建日期),这也更有意义。

在这两种情况下,您最好将图像保存到文件并将文件名放入持久性存储中。通常最好将二进制blob保存为Core Data中的图像和声音。二进制是确定的,如果你知道这个值非常小,但图像可能会相当大。

我不确定为什么你想在第二种情况下你不使用第一种情况下的唯一ID。如果您因为某种原因需要唯一的ID,则UUID类是生成一个ID的简便方法。