将 UIColor 保存到 NSUserDefaults 并从 NSUserDefaults 加载

编程入门 行业动态 更新时间:2024-10-28 05:17:04
本文介绍了将 UIColor 保存到 NSUserDefaults 并从 NSUserDefaults 加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

将 UIColor 保存到 NSUserDefaults 中,然后将其取回的最简单方法是什么?

What's the easiest way to save a UIColor into NSUserDefaults and then get it back out?

推荐答案

有了接受的答案,你会很快最终得到了很多 NSKeyed 档案 &取消归档您的所有代码.更简洁的解决方案是扩展 UserDefaults.这正是扩展的用途;UserDefaults 可能不了解 UIColor,因为 UIKit 和 Foundation 是不同的框架.

With the accepted answer, you'll quickly end up with a lot of NSKeyed archives & unarchives all over your code. A cleaner solution is to extend UserDefaults. This is exactly what extensions are for; UserDefaults probably doesn't know about UIColor as it is because UIKit and Foundation are different frameworks.

extension UserDefaults { func color(forKey key: String) -> UIColor? { var color: UIColor? if let colorData = data(forKey: key) { color = NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor } return color } func set(_ value: UIColor?, forKey key: String) { var colorData: Data? if let color = value { colorData = NSKeyedArchiver.archivedData(withRootObject: color) } set(colorData, forKey: key) } }

斯威夫特 4.2

extension UserDefaults { func color(forKey key: String) -> UIColor? { guard let colorData = data(forKey: key) else { return nil } do { return try NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: colorData) } catch let error { print("color error (error.localizedDescription)") return nil } } func set(_ value: UIColor?, forKey key: String) { guard let color = value else { return } do { let data = try NSKeyedArchiver.archivedData(withRootObject: color, requiringSecureCoding: false) set(data, forKey: key) } catch let error { print("error color key data not saved (error.localizedDescription)") } } }

用法

UserDefaults.standard.set(UIColor.white, forKey: "white") let whiteColor = UserDefaults.standard.color(forKey: "white")

这也可以在带有类别的 Objective-C 中完成.

This can also be done in Objective-C with a category.

我在此处添加了 Swift 文件作为要点.

I've added the Swift file as a gist here.

更多推荐

将 UIColor 保存到 NSUserDefaults 并从 NSUserDefaults 加载

本文发布于:2023-07-16 14:40:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1122708.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:并从   加载   UIColor   NSUserDefaults

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!