首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将颜色数组保存到用户默认值- iOS SWIFT2.3

将颜色数组保存到用户默认值- iOS SWIFT2.3
EN

Stack Overflow用户
提问于 2016-06-18 14:49:29
回答 2查看 1.3K关注 0票数 1

我想知道如何将UIColors数组保存到用户默认状态。

我有下面的代码来将单个UIColor保存到用户默认值,有人知道如何修改它以允许我在NS用户默认值中存储UIColor数组吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-18 15:06:35

你可以这样做

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2018-11-23 12:09:14

Swift 4.2:将颜色/颜色保存并加载到用户默认状态注意:默认加载可以工作,但是包含一个不推荐的项,但还没有一个好的示例来替换它。

代码语言:javascript
复制
               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
            {

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

https://stackoverflow.com/questions/37898250

复制
相关文章

相似问题

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