Tag: nscoding

嵌套自定义对象的NSCoding?

我有一系列的嵌套对象,我需要通过NSCoding协议,以便我可以将顶级对象保存到NSUserDefaults。 这里是对象的结构: “导师”class NSMutableArray持有的实例… 'class'级 NSMutableArray持有的实例… '学生'class 名称属性 数字属性 货币财产 我需要将教师的实例保存到NSUserDefaults或应用程序的文档。 正如你所看到的教师对象是持有一个数组,然后举行一个类的实例。 那个类对象持有学生的实例。 NSCoding协议是否recursion? 我的意思是,如果我将NSCoding协议添加到每个类,然后我可以保存一个教师对象,它会recursion编码包含的对象? 那么它会在解码时以相同的方式工作吗? 我可以解码一个教师类,它会recursion解码包含的对象,因为他们也符合NSCoding协议? 我怎么能设置这个呢?

Xcode 9 GM – WKWebView NSCoding支持在以前的版本中被打破

有谁知道如何解决这个错误与Xcode 9 GM? 我正在使用Xcode 8.3制作的应用程序,部署目标是针对iOS 9.3,之前从未遇到过这个问题。 我没有在这里或在苹果论坛上find任何信息呢:( 编辑:当我把一个WKWebView到接口生成器,而不是如果我以编程方式使用它,这个错误。 编辑2:嗯,它终于不是一个错误,请参阅下面的Quinn的答案有关于此行为的更多信息。 感谢他的解释。

不符合协议'NSCoding' – Swift 3

我看过几个类似于我的问题。 然而,这些都属于迅速2/1,我目前正在使用迅速3.我相信苹果已经稍微改变了它。 class Person: NSObject, NSCoding { var signature: UIImage init(signature: UIImage) { self.signature = signature } required convenience init(coder aDecoder: NSCoder) { let signature = aDecoder.decodeObject(forKey: "signature") as! UIImage self.init(signature: signature) } func encodeWithCoder(aCoder: NSCoder) { aCoder.encode(signature, forKey: "signature") } } 你会注意到Swift 3如何迫使我使用required convenience init(而不是required init(或许这与它有关)。 我该如何解决这个问题? 谢谢!

尝试在Swift 3中保存自定义对象时尝试插入非属性列表对象

我有一个符合NSCoding协议的简单对象。 import Foundation class JobCategory: NSObject, NSCoding { var id: Int var name: String var URLString: String init(id: Int, name: String, URLString: String) { self.id = id self.name = name self.URLString = URLString } // MARK: – NSCoding required init(coder aDecoder: NSCoder) { id = aDecoder.decodeObject(forKey: "id") as? Int ?? aDecoder.decodeInteger(forKey: "id") name = aDecoder.decodeObject(forKey: […]

使用Swift将类的结构保存到NSUserDefaults中

我有一个类,里面的类是(swift)数组,基于全局结构。 我想用这个类保存一个数组到NSUserDefaults。 这是我的代码: struct mystruct { var start : NSDate = NSDate() var stop : NSDate = NSDate() } class MyClass : NSObject { var mystructs : [mystruct] init(mystructs : [mystruct]) { self.mystructs = mystructs super.init() } func encodeWithCoder(encoder: NSCoder) { //let val = mystructs.map { $0 as NSObject } //this also doesn't work let […]

Swift在超类函数中从相应的子类调用类函数

我想在超类中实现init(coder aDecoder: NSCoder!) ,并在运行时通过在超类的特定子类上调用一个类方法来在所有子类中使用它。 MySuperClass class func dummyDict() -> NSDictionary init(coder aDecoder: NSCoder!) { for(key,value) in self.class.dummyDict(){ ——————– ^ | | Get this from the corresponding subclass at runtime! NSLog("encoding \(value) for key \(key)") } } MySuperClass子类可能在运行时访问类函数dummyDict()吗?