为什么不建议将 UIImage 数据保存到 UserDefaults?
Why is saving UIImage data to UserDefaults ill advised?
我想知道为什么不建议将用户个人资料图像存储为 Data
到用户默认值。原因是:我已经创建了一个有一些人在使用它的应用程序。该应用程序要求用户创建一个个人资料,他们最多可以在该个人资料上上传 6 张个人资料照片。图像被推送到我的后端,并且还存储为 Data
到应用程序的用户默认值。
我读到最好将这些图像保存到文档目录并将文件路径保存为用户默认的字符串。这是为什么?我应该花时间编写代码,将保存为 Data
的图像转换为现有设备上的用户默认值,再转换为保存到文档目录中的图像,这有什么大不了的吗?
"why" 很简单。 UserDefaults 不是数据库。它只是一个 plist 文件。整个事情要么立即加载到内存中,要么不加载。如果是,则所有 UIImage 数据对象都位于内存中。内存有限,图像很大。再加上你在加载和保存过程中浪费时间。
"is it such a big deal"部分见仁见智。在我看来,是的,是的。那是因为我经历了这个过程,我很高兴我做到了。是的,编写迁移代码很痛苦,但是一旦完成,您只需将其留在原地,您的应用程序现在就可以永远正确地处理数据保存。
我想知道为什么不建议将用户个人资料图像存储为 Data
到用户默认值。原因是:我已经创建了一个有一些人在使用它的应用程序。该应用程序要求用户创建一个个人资料,他们最多可以在该个人资料上上传 6 张个人资料照片。图像被推送到我的后端,并且还存储为 Data
到应用程序的用户默认值。
我读到最好将这些图像保存到文档目录并将文件路径保存为用户默认的字符串。这是为什么?我应该花时间编写代码,将保存为 Data
的图像转换为现有设备上的用户默认值,再转换为保存到文档目录中的图像,这有什么大不了的吗?
"why" 很简单。 UserDefaults 不是数据库。它只是一个 plist 文件。整个事情要么立即加载到内存中,要么不加载。如果是,则所有 UIImage 数据对象都位于内存中。内存有限,图像很大。再加上你在加载和保存过程中浪费时间。
"is it such a big deal"部分见仁见智。在我看来,是的,是的。那是因为我经历了这个过程,我很高兴我做到了。是的,编写迁移代码很痛苦,但是一旦完成,您只需将其留在原地,您的应用程序现在就可以永远正确地处理数据保存。