我已经归档了一个 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/

10-13 07:00