zoukankan      html  css  js  c++  java
  • 使用NCoding归档进行存储数据时候报错

    问题:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Demo1.UserInfo encodeWithCoder:]: unrecognized selector sent to instance 0x610000470e40'

    这表示没有找到encodeWithCoder这个方法,有以下几种情况

    ①没有继承NCoding这个类

    ②没有写encodeWithCoder这个方法(swift3.0中已改成encode())

    解决方式:在UserInfo类中继承NCoding协议,并实现两个方法,具体如下

    import UIKit
    
    class UserInfo: NSObject ,NSCoding{
        var name:String
        var age:String
        
        //构造方法
        init(name:String = "",age:String = "") {
            self.name = name
            self.age = age
        }
        
        //解析方法
        required init(coder aDecoder:NSCoder) {
            self.name = aDecoder.decodeObject(forKey: "Name") as! String
            self.age = aDecoder.decodeObject(forKey: "Age") as! String
        }
    
        //将信息编码成object
        func encode(with aCoder: NSCoder) {
            aCoder.encode(name, forKey: "Name")
            aCoder.encode(age,forKey:"Age")
        }
    }
  • 相关阅读:
    Configuration Management
    Android Hooking
    技术趋势总结
    Maven Repo Mirror
    拥抱JAVA
    NPM 更新所有依赖项
    Knockout Mvc Compoment FrameSet With Typescript
    Knockoutjs Component问题汇总
    前端编码规范文档
    优秀程序设计的18大原则
  • 原文地址:https://www.cnblogs.com/igeniuswwh/p/5962266.html
Copyright © 2011-2022 走看看