在Swift中存储带有字符串和图像的大型数组

时间:2015-07-25 20:13:16

标签: arrays swift core-data nsuserdefaults storing-data

您好我正在尝试存储一个充满对象的数组,以便在应用完全关闭时它不会消失。

问题: 如果我使用核心数据并将数组转换为NSData,那么它的工作原理。但该应用程序在处理阵列时会冻结。 我也尝试过可转换的数据类型,但我无法使其工作。 并且我无法使用NSUserdefaults,因为它不支持图像。

有没有人知道如何解决这个问题。 我是编程的新手,所以这可能是一个完全错误的方法。

2 个答案:

答案 0 :(得分:1)

首先将具有唯一文件名的单个文件中的图像保存在Documents目录的图像目录中。将唯一的文件名放在数组中,而不是图像。

然后,根据您的需要,如果需要快速随机访问,请将每个图像信息保存在Core Data中。或者将数组保存在文件中。

对于1500个字符串,大约100个字符,每个保存在一个文件中可能没问题,我会从那里开始,只有在存在性能问题的情况下才会移动到核心数据Core Data会解决它。

正如Ken Beck所说:"做最简单的事可能有用。"我不相信在阵列中有750张图像如果它们的尺寸很大就会真的有效。

请勿使用NSUserDefaults

答案 1 :(得分:0)

核心数据对于将阵列保存到磁盘来说太过分了。

你节省了什么样的物品?

如果您已经有将数组转换为NSData的逻辑,为什么不将文件保存到文档目录或缓存目录(如果清除可以重新创建缓存,则文件是否唯一且包含用户状态信息。)

编辑:

扎普在他的问题中提出了一些好处。这个数组有多大(元素数量和总数据大小。)将它全部加载到内存中是否合理?

如果您正在寻找一种一次加载一个元素的随机访问方式,那么数据库可能是合理的。

具体解决方案取决于您问题的具体细节,因此我们需要更多信息。