如何将 UIView 存储在 CoreData 或 UserDefaults 中

Posted

技术标签:

【中文标题】如何将 UIView 存储在 CoreData 或 UserDefaults 中【英文标题】:How to store UIView in CoreData or UserDefaults 【发布时间】:2018-05-27 17:12:54 【问题描述】:

在我的情况下,我有一个 ViewController 客户端必须创建一个 UILabel ,我想存储 UILabel ,当我使用 UserDefaults 它返回 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
      

【问题讨论】:

我的笑声,这是我第一次在编程而不是 swift 中看到有人想要存储 UI 元素(I/O),没有用例需要,你需要存储它的文本,UI 元素不会飞,您可以轻松加载它们并将存储的文本设置为它们 【参考方案1】:

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

不存储 UI 类 - 只存储您最近要恢复的参数。

【讨论】:

以上是关于如何将 UIView 存储在 CoreData 或 UserDefaults 中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用啥属性类型?

存储 UIImages 的持久数组 - CoreData 还是在磁盘上?

如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?

将 UIColor 存储在 CoreData 中

如何将 SwiftUI 中的颜色类型存储到 CoreData 中?

CoreData如何实现托管对象的“计算”属性字段