首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将图像保存到NSUserDefault有什么缺点?

将图像保存到NSUserDefault有什么缺点?
EN

Stack Overflow用户
提问于 2016-08-07 10:43:36
回答 1查看 502关注 0票数 0

与核心数据相比,将图像保存到NSUserDefault有什么缺点?为什么在NSUserDefault中保存图像不是最佳实践呢?

我知道在NSUserDefault中保存数据是通过NSData进行的。但在核心数据方面是一样的。那么,与NSUserDefault和核心数据相比,速度如何呢?

很抱歉我这里不提供密码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-07 11:36:21

NSUserDefaults显式地用于存储用户默认值--图像不属于那里,特别是因为NSUserDefaults将信息写入.plist文件。原始图像数据不属于.plist文件。除此之外,它也不是很有效:您在.plist文件中存储的信息越多,加载它所需的时间就越长。如果要加载特定的映像,则必须加载整个.plist文件--包括当前不需要的所有其他映像。简单地说:不做

存储图像的一种更合适、更有效的方法是将它们存储在应用程序的文档目录中--它们属于哪个目录。

你可以这样做:

存储图像

代码语言:javascript
运行
复制
func saveImage(image: UIImage, fileName: String) {
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
        let path = documentsURL?.appendingPathComponent(fileName)

        do {
            try UIImagePNGRepresentation(image)?.write(to: path!)
        } catch {
            // Handle possible errors here
            print(error.localizedDescription)
        }
    }

调用您的saveImage 函数

代码语言:javascript
运行
复制
let theImage = UIImage(named: "yourImage")
saveImage(image: theImage!, fileName: "yourImageName")

将图像存储到应用程序的文档目录后,可以获取图像的文件路径并将其存储在CoreData数据库中,以便稍后检索图像。

CoreData也可以通过一个小技巧为您自动完成这一任务。通过为二进制数据属性启用“允许外部存储”复选框,CoreData将将图像存储在设备的某个位置,并且只会在数据库中保留对图像的引用(而不是实际的映像),以保持高性能。这是一些more information about that

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38813307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档