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

时间:2017-09-18 15:54:14

标签: database core-data

我正在构建一个应用程序,将多张图片附加到录制内容中。因此,存在具有属性“名称”和“URL”的“记录”实体。我想将多个图像附加到一个录制内容中。

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

  2. 或者我是否创建另一个具有属性“Image”和“RecordingID”的实体,其中包含所有录像的所有图像,并且每个图像都连接到带有录制ID的录像?如果是,我如何为录音创建唯一的ID?

  3. 请回答哪一个更好的表现,并根据您的选择解释其相关问题。

1 个答案:

答案 0 :(得分:0)

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

如果您使用图像数组,Core Data会在您需要其中一个图像时立即加载所有图像。您可以同时在内存中保存每个图像,也可以不使用任何图像。如果你总是同时使用所有图像,这可能没问题。

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

在这两种情况下,最好将图像保存到文件中,并将文件名只放在持久存储中。通常最好将二进制blob(如图像和声音)保留在Core Data之外。如果您知道值非常小,则二进制是可以的,但图像可能非常大。

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