Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么将UIImage数据保存到UserDefaults是不明智的?_Swift_Uiimage_Nsuserdefaults_Nsdata_Nsdocumentdirectory - Fatal编程技术网

Swift 为什么将UIImage数据保存到UserDefaults是不明智的?

Swift 为什么将UIImage数据保存到UserDefaults是不明智的?,swift,uiimage,nsuserdefaults,nsdata,nsdocumentdirectory,Swift,Uiimage,Nsuserdefaults,Nsdata,Nsdocumentdirectory,我想知道为什么将用户配置文件图像作为数据存储到用户默认值是不明智的。原因是:我已经创建了一个有人使用的应用程序。该应用程序要求用户创建一个个人资料,最多可以上传6张个人资料图片。这些图像被推送到我的后端,并作为应用程序用户默认设置的数据存储 我已经读到,最好将这些图像保存到文档目录,并将文件路径作为字符串保存到用户默认值。这到底是为什么?我应该花时间编写代码,将保存为数据的图像转换为现有设备上的用户默认图像,并将其保存到文档目录中,这有什么大不了的吗?原因很简单。UserDefaults不是数据

我想知道为什么将用户配置文件图像作为
数据存储到用户默认值是不明智的。原因是:我已经创建了一个有人使用的应用程序。该应用程序要求用户创建一个个人资料,最多可以上传6张个人资料图片。这些图像被推送到我的后端,并作为应用程序用户默认设置的
数据存储

我已经读到,最好将这些图像保存到文档目录,并将文件路径作为字符串保存到用户默认值。这到底是为什么?我应该花时间编写代码,将保存为
数据的图像转换为现有设备上的用户默认图像,并将其保存到文档目录中,这有什么大不了的吗?

原因很简单。UserDefaults不是数据库。这只是一个plist文件。要么全部内容立即加载到内存中,要么不加载。如果是,则所有UIImage数据对象都位于内存中。内存有限,图像很大。另外,在加载和保存过程中,您会浪费时间


“这有什么大不了的”部分是一个意见问题。在我看来,是的。那是因为我经历了这个过程,我很高兴我做到了。是的,编写迁移代码是一件痛苦的事情,但一旦您完成了,您只需将其留在原位,您的应用程序现在就可以永远正确地处理数据保存。

感谢您的回复。我可能会写一些东西来迁移它们,至少这是一次学习经历。