Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置异常中的Swift保存cutom类:';NSInvalidArgumentException';,原因:';***-仅为抽象类定义了长度_Swift_Settings_Nscoding - Fatal编程技术网

设置异常中的Swift保存cutom类:';NSInvalidArgumentException';,原因:';***-仅为抽象类定义了长度

设置异常中的Swift保存cutom类:';NSInvalidArgumentException';,原因:';***-仅为抽象类定义了长度,swift,settings,nscoding,Swift,Settings,Nscoding,您好,我尝试使用NSUserDefaults存储自定义对象。我用了这个有用的帖子 但是当我尝试它时,我得到了以下异常 2015-05-12 11:05:14.994 KirchnerTime[4424:75095]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*-仅为抽象类定义了长度。定义-[项目长度]!' 这是应该存储的对象 public func saveSettings() { let settings = NSUserDefa

您好,我尝试使用NSUserDefaults存储自定义对象。我用了这个有用的帖子

但是当我尝试它时,我得到了以下异常

2015-05-12 11:05:14.994 KirchnerTime[4424:75095]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*-仅为抽象类定义了长度。定义-[项目长度]!'

这是应该存储的对象

 public func saveSettings()
{
    let settings = NSUserDefaults.standardUserDefaults()
    settings.setValue(self._cardNumber, forKeyPath: cardNumberKey)

    settings.setObject(NSKeyedArchiver.archivedDataWithRootObject(ProjectJobEntity(barCode: "Test")), forKey: "Project")
}
我就是这样尝试的。

我也有同样的例外

我使用NSObject作为父类

在代码下使用

    public class ProjectJobEntity: NSObject
    {
        private let _barCode: String
        private var _projectNumber: String
        private var _projectDescription: String
        private var _jobDescription: String

        public var BarCode: String
            {
            get { return self._barCode }
        }

        public var ProjectNumber: String
            {
            get { return self._projectNumber }
            set { self._projectNumber = newValue }
        }

        public var ProjectDescription: String
            {
            get { return self._projectDescription }
            set { self._projectDescription = newValue }
        }

        public var JobDescription: String
            {
            get { return self._jobDescription }
            set { self._jobDescription = newValue }
        }

        public init(barCode: String, projectNumber: String, projectDescription: String, jobDescription: String)
        {
            self._barCode = barCode
            self._projectNumber = projectNumber
            self._projectDescription = projectDescription
            self._jobDescription = jobDescription

            super.init()
        }


        public init(barCode: String)
        {
            self._barCode = barCode
            self._projectNumber = ""
            self._projectDescription = ""
            self._jobDescription = ""

            super.init()
        }

        public func encodeWithCoder(aCoder: NSCoder)
        {
            aCoder.encodeObject(self._barCode, forKey: "barCode")
            aCoder.encodeObject(self._projectNumber, forKey: "projectNumber")
            aCoder.encodeObject(self._projectDescription, forKey: "projectDescription")
            aCoder.encodeObject(self._jobDescription, forKey: "jobDescription")
        }

        public func initWithCoder(aDecoder: NSCoder) -> ProjectJobEntity
        {
            let barCode = aDecoder.decodeObjectForKey("barCode") as! String
            let projectNumber = aDecoder.decodeObjectForKey("projectNumber") as! String
            let projectDescription = aDecoder.decodeObjectForKey("projectDescription") as! String
            let jobDescription = aDecoder.decodeObjectForKey("jobDescription") as! String

            return ProjectJobEntity(barCode: barCode, projectNumber: projectNumber, projectDescription: projectDescription, jobDescription: jobDescription)
        }
    }
    public class ProjectJobEntity: NSObject
    {
        private let _barCode: String
        private var _projectNumber: String
        private var _projectDescription: String
        private var _jobDescription: String

        public var BarCode: String
            {
            get { return self._barCode }
        }

        public var ProjectNumber: String
            {
            get { return self._projectNumber }
            set { self._projectNumber = newValue }
        }

        public var ProjectDescription: String
            {
            get { return self._projectDescription }
            set { self._projectDescription = newValue }
        }

        public var JobDescription: String
            {
            get { return self._jobDescription }
            set { self._jobDescription = newValue }
        }

        public init(barCode: String, projectNumber: String, projectDescription: String, jobDescription: String)
        {
            self._barCode = barCode
            self._projectNumber = projectNumber
            self._projectDescription = projectDescription
            self._jobDescription = jobDescription

            super.init()
        }


        public init(barCode: String)
        {
            self._barCode = barCode
            self._projectNumber = ""
            self._projectDescription = ""
            self._jobDescription = ""

            super.init()
        }

        public func encodeWithCoder(aCoder: NSCoder)
        {
            aCoder.encodeObject(self._barCode, forKey: "barCode")
            aCoder.encodeObject(self._projectNumber, forKey: "projectNumber")
            aCoder.encodeObject(self._projectDescription, forKey: "projectDescription")
            aCoder.encodeObject(self._jobDescription, forKey: "jobDescription")
        }

        public func initWithCoder(aDecoder: NSCoder) -> ProjectJobEntity
        {
            let barCode = aDecoder.decodeObjectForKey("barCode") as! String
            let projectNumber = aDecoder.decodeObjectForKey("projectNumber") as! String
            let projectDescription = aDecoder.decodeObjectForKey("projectDescription") as! String
            let jobDescription = aDecoder.decodeObjectForKey("jobDescription") as! String

            return ProjectJobEntity(barCode: barCode, projectNumber: projectNumber, projectDescription: projectDescription, jobDescription: jobDescription)
        }
    }