我已经归档了一个 NSColor 以将它存储在 NSUserDefaults 中:
var data = NSArchiver.archivedDataWithRootObject(NSColor.redColor())
storage.setObject(data, forKey: "color")
storage.synchronize()
但是现在我需要从 NSData 取回颜色,我不知道该怎么做
最佳答案
你只需要使用 if let 来解开你的 NSData 并且你需要一个条件转换如下:
编辑/更新:
Swift 3 或更高版本
// archiving
let color: NSColor = .red
let data = NSKeyedArchiver.archivedData(withRootObject: color)
UserDefaults.standard.set(data, forKey: "color")
// unarchiving
if let loadedData = UserDefaults.standard.data(forKey: "color"),
let loadedColor = NSKeyedUnarchiver.unarchiveObject(with: loadedData) as? NSColor {
// you can access loadedColor here
print(loadedColor) // "sRGB IEC61966-2.1 colorspace 1 0 0 1\n"
}
关于macos - 快速将 NSData 解压回 NSColor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28242764/