iOS通过文件或nsdata将UIImage保存在plist中?

标签 ios objective-c uiimage save nsdata

我正在尝试将字典保存在 plist 中。 字典键之一是图像。

我有两个选择(都尝试过并且有效),但不确定哪个更好?

1)将Documents文件夹中的图像保存为文件+将文件名保存在plist中以便以后检索?

2)将图像的NSData直接保存在plist中以便以后检索?

两种方法我都试过了,效果都很好。我能够保存和检索图像。

我的问题是:一种方式相对于另一种方式有什么优点/缺点吗?

谢谢

编辑:

更多说明:图像来自相机,我使用

保存它们
NSData *imageData  = UIImageJPEGRepresentation(image, 0.7f);
[imageData writeToFile:[SAD.myE documentsPathForFileName:@"testImage.jpg"] atomically:YES]; //Write the file

然后我将它们缩小,并保存一个较小的图像以在 tableView 中使用,每个单元格一个图像。

据我了解,最好将它们另存为文档目录中的文件并在后台以这种方式检索它们?

最佳答案

这实际上取决于您保存的方式,更重要的是,取决于您稍后使用数据的方式。

大多数情况下,保存可以卸载到后台,这样就不是你的瓶颈,你可以自由地做任何你想做的事情

读取数据通常会受到时间限制,例如您正在表格 View 中显示图片,这意味着您希望将每个文件分开一个图像,以便您可以尽可能原子地读取。或者您可能需要随机访问 - 那么您最好将除二进制 blob 之外的所有数据序列化到 SQLite 中

全部,如果您能提供数据消耗的示例。

澄清一下,如果您正在优化阅读 - 最好的选择是保存解压缩的图像,这样它甚至不必解析 png 或 jpg 格式

关于iOS通过文件或nsdata将UIImage保存在plist中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742123/

相关文章:

ios - 如何将字符串拆分为以 ios 中的某些字符开头的子字符串

ios - NSRunLoop运行模式:beforeDate: doesn't wait

ios - GameKit 点对点连接问题。向另一台设备发送邀请需要很长时间

ios - 无法调用非函数类型的值 'UIImage?'

ios - iOS 不会自动清除 ImageIO 脏内存

ios - AFNetworking 3.0 GET/POST 设置可接受的内容类型并清除图像缓存

ios - 是否有一种 API 可以让人们通过 USB 将 iOS 应用程序与其 OSX 应用程序同步?

ios - 如何在 google maps sdk for ios in swift 中为 map View 添加标记

objective-c - 声明一个 ObjC 参数,它是一个符合协议(protocol)的类

swift - 将选取的图像保存到 CoreData