我正在构建一个应用程序,将多张图片附加到录制内容中。因此,存在具有属性“名称”和“URL”的“记录”实体。我想将多个图像附加到一个录制内容中。
那么我还要添加另一个属性“images”并存储图像数组吗?如果是,那怎么可能?
或者我是否创建另一个具有属性“Image”和“RecordingID”的实体,其中包含所有录像的所有图像,并且每个图像都连接到带有录制ID的录像?如果是,我如何为录音创建唯一的ID?
请回答哪一个更好的表现,并根据您的选择解释其相关问题。
答案 0 :(得分:0)
这取决于您如何一如既往地使用数据。
如果您使用图像数组,Core Data会在您需要其中一个图像时立即加载所有图像。您可以同时在内存中保存每个图像,也可以不使用任何图像。如果你总是同时使用所有图像,这可能没问题。
如果您使用单独的实体,则可以在需要时加载单个图像。它稍微复杂一点,但可以减少内存需求。如果您决定需要为每个图像添加更多元数据(例如创建日期),这也更有意义。
在这两种情况下,最好将图像保存到文件中,并将文件名只放在持久存储中。通常最好将二进制blob(如图像和声音)保留在Core Data之外。如果您知道值非常小,则二进制是可以的,但图像可能非常大。
我不确定为什么在第二种情况下你不想使用一个唯一的ID,在第一种情况下你不使用一个。如果由于某种原因需要唯一ID,UUID
类是生成一个的便捷方式。