将一组颜色保存为用户默认值 - iOS Swift 2.3
Save an array of colors to User Defaults - iOS Swift 2.3
我想知道如何将一组 UIColors 保存为用户默认值。
我有以下代码将单个 UIColor 保存到用户默认值,有谁知道如何修改它以允许我在 NS 用户默认值中存储 UIColor 数组?
extension NSUserDefaults {
func colorForKey(key: String) -> UIColor? {
var color: UIColor?
if let colorData = dataForKey(key) {
color = NSKeyedUnarchiver.unarchiveObjectWithData(colorData) as? UIColor
}
return color
}
func setColor(color: UIColor?, forKey key: String) {
var colorData: NSData?
if let color = color {
colorData = NSKeyedArchiver.archivedDataWithRootObject(color)
}
setObject(colorData, forKey: key)
}
}
- 我正在使用 Swift 2.3
您可以按照以下方式进行
let colors = [UIColor.whiteColor(), UIColor.greenColor()] // Array of colors
NSUserDefaults.standardUserDefaults().setObject(NSKeyedArchiver.archivedDataWithRootObject(colors), forKey: "ColorsKey") //For saving in NSUserDefaults
//For retrieving use following
let decodedColorsData = NSUserDefaults.standardUserDefaults().objectForKey("ColorsKey") as! NSData
let colorsArray = (NSKeyedUnarchiver.unarchiveObjectWithData(decodedColorsData) as! NSArray) as Array
Swift 4.2:保存和加载颜色/用户默认颜色
注意:默认值的加载有效,但包含一个已弃用的项目,该项目还没有一个很好的示例来替换它。
let colorToSetAsDefault : UIColor = view.backgroundColor!
do
{
let data : NSData = try NSKeyedArchiver.archivedData(withRootObject: colorToSetAsDefault,requiringSecureCoding: false) as NSData
UserDefaults.standard.set(data, forKey: "userHeadingColor") // your key in quotes
UserDefaults.standard.synchronize()
} // end of do
catch
{
print("Couldn't save color")
} // end of catch
// load the color back as a test to make sure the save has worked
if let colorObject = UserDefaults.standard.object(forKey: "userHeadingColor")
{
let colorData = colorObject as! NSData
let color = NSKeyedUnarchiver.unarchiveObject(with: colorData as Data) as? UIColor
// replace with unarchivedObjectOfClass:fromData:error:
self.testDefaultsView.backgroundColor = color
}
else
{
}
我想知道如何将一组 UIColors 保存为用户默认值。
我有以下代码将单个 UIColor 保存到用户默认值,有谁知道如何修改它以允许我在 NS 用户默认值中存储 UIColor 数组?
extension NSUserDefaults {
func colorForKey(key: String) -> UIColor? {
var color: UIColor?
if let colorData = dataForKey(key) {
color = NSKeyedUnarchiver.unarchiveObjectWithData(colorData) as? UIColor
}
return color
}
func setColor(color: UIColor?, forKey key: String) {
var colorData: NSData?
if let color = color {
colorData = NSKeyedArchiver.archivedDataWithRootObject(color)
}
setObject(colorData, forKey: key)
}
}
- 我正在使用 Swift 2.3
您可以按照以下方式进行
let colors = [UIColor.whiteColor(), UIColor.greenColor()] // Array of colors
NSUserDefaults.standardUserDefaults().setObject(NSKeyedArchiver.archivedDataWithRootObject(colors), forKey: "ColorsKey") //For saving in NSUserDefaults
//For retrieving use following
let decodedColorsData = NSUserDefaults.standardUserDefaults().objectForKey("ColorsKey") as! NSData
let colorsArray = (NSKeyedUnarchiver.unarchiveObjectWithData(decodedColorsData) as! NSArray) as Array
Swift 4.2:保存和加载颜色/用户默认颜色 注意:默认值的加载有效,但包含一个已弃用的项目,该项目还没有一个很好的示例来替换它。
let colorToSetAsDefault : UIColor = view.backgroundColor!
do
{
let data : NSData = try NSKeyedArchiver.archivedData(withRootObject: colorToSetAsDefault,requiringSecureCoding: false) as NSData
UserDefaults.standard.set(data, forKey: "userHeadingColor") // your key in quotes
UserDefaults.standard.synchronize()
} // end of do
catch
{
print("Couldn't save color")
} // end of catch
// load the color back as a test to make sure the save has worked
if let colorObject = UserDefaults.standard.object(forKey: "userHeadingColor")
{
let colorData = colorObject as! NSData
let color = NSKeyedUnarchiver.unarchiveObject(with: colorData as Data) as? UIColor
// replace with unarchivedObjectOfClass:fromData:error:
self.testDefaultsView.backgroundColor = color
}
else
{
}