如何将 UIView 存储在 CoreData 或 UserDefaults 中

How to store UIView in CoreData or UserDefaults

在我的例子中,我有一个 ViewController 客户端必须创建一个 UILabel ,我想存储 UILabel ,当我使用 UserDefaults 它 returns nil :

extension UserDefaults {

      func setLabel(label:[UILabel],forKey key: String){
        let viewData: NSData?
        viewData = NSKeyedArchiver.archivedData(withRootObject: label) as NSData?

        set(viewData, forKey: key)
    }

    func labelForKey(key: String) -> [UILabel]? {
        var view: [UILabel]?
        if let viewData = data(forKey: key) {
            view = NSKeyedUnarchiver.unarchiveObject(with: viewData) as? [UILabel]
        }
        return view
    }  
}

至于UserDefaults,您不能在UserDefaults中存储自定义对象,只能在NSDataNSStringNSNumberNSDateNSArrayNSDictionary(或 Swift 中的类似类型),请参阅文档。

不存储 UI class - 仅存储您最近要恢复的参数。