iOS数据持久化之数据归档遇到的问题

今天温习了一下数据持久化的知识,突然发现数据归档忘记怎么写了,于是就用swift重新温习了一下,期间还遇到两个小问题,现在记下来以便以后温习

//这里是写练习用的一个归档数据类
public class Node:NSObject,NSCoding
{
    public var nId:Int?
    public var name:String?
    
    override init() {
        
    }
    
    public func encode(with aCoder: NSCoder)
    {
        aCoder.encode(nId, forKey: "nId")
        aCoder.encode(name, forKey: "name")
    }
    
    public required init?(coder aDecoder: NSCoder)
    {
        self.nId = aDecoder.decodeObject(forKey: "nId") as? Int
        self.name = aDecoder.decodeObject(forKey: "name") as? String
    }
}
//这部分是归档数据的过程和取出归档数据的过程练习
let fileManager = FileManager.default
let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
 if let documentPath = urls.first
 {
       let dbPath = documentPath.appendingPathComponent("node.data")
       let node = Node()
       node.nId = 1000
       node.name = "Hello"
       let url = dbPath.path //在这里遇到过问题,最开始用的是absoluteString取的地址字符串,
       但发现在归档写文件的时候总是失败返回false后来经过查资料才发现是地址取错了,
       应该使用path来取
       print(url)
       let result = NSKeyedArchiver.archiveRootObject(node, toFile: url)
       print(result)
       if let model = NSKeyedUnarchiver.unarchiveObject(withFile: url) as? Node
       {
              print("mode is \(model.nId ?? 0), \(model.name ?? "")")
       }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天没腾出时间来写,真是糟糕。 但在花鸟市场怕桐桐掉了的心理活动必须记录下来,那种想杀人的惶恐,一点都不想体验!明...
    赫墨思阅读 125评论 0 0
  • 本以为在美丽宜人的海滨城市求学,便不再留念故乡村野的风景。事实上,当我在学校的小径独自徘徊时,虽醉心于眼前的人工园...
    随和先生阅读 703评论 0 0
  • 写作训练也进行了一段时间。70天读写训练营坚持下来。 突然想好好反思一下。无关于过往取得了什么成绩,而是反思我将要...
    慧子永远没有太晚的开始阅读 198评论 8 12