Class 如何保存和加载对象数组-Swift 4
这是我的应用程序“提醒”中的代码: 文件夹类:Class 如何保存和加载对象数组-Swift 4,class,object,swift4,saving-data,userdefaults,Class,Object,Swift4,Saving Data,Userdefaults,这是我的应用程序“提醒”中的代码: 文件夹类: class Folder { var name: String var labelName: String var imageName : String var colour : ColourTheme var colourArray : Array<UIColor> var maxNumOfPages : Int var text : Array<String>
class Folder
{
var name: String
var labelName: String
var imageName : String
var colour : ColourTheme
var colourArray : Array<UIColor>
var maxNumOfPages : Int
var text : Array<String>
var touchID : Bool
var isNewFolder : Bool
init (name: String, labelName: String, imageName: String, colour: ColourTheme, maxNumOfPages: Int, text: Array<Any>, touchID: Bool, isNewFolder: Bool)
{
self.name = name
self.labelName = labelName
self.imageName = imageName
self.colour = colour
self.colourArray = []
self.maxNumOfPages = maxNumOfPages
self.text = text as! Array<String>
self.touchID = touchID
self.isNewFolder = isNewFolder
}
我试图在程序的不同点保存和加载文件夹对象数组。
目前,它给出了以下错误:
NSForwarding:警告:类“提醒.文件夹”的对象0x280e3c600未实现methodSignatureForSelector:--前面有问题
无法识别的选择器-[Reminder.Folder ReplacementObjectForkeyDarchiver:]
我找遍了所有的地方试图解决这个问题请有人帮忙,谢谢 您的文件夹模型类需要继承自NSObject,并采用协议及其所需的方法将数据存储在UserDefaults中 像这样:
class Folder: NSObject {
var name: String
var labelName: String
.....
init (name: String, labelName: String .....)
{
self.name = name
self.labelName = labelName
......
}
}
您的文件夹类需要继承自NSObject和NScoding,以及编码器和解码器所需的协议
class Folder: NSObject, NSCoding {
var name: String
var labelName: String
.....
struct keys {
static let name = "name"
static let labelName = "labelName"
}
init (name: String, labelName: String .....)
{
self.name = name
self.labelName = labelName
......
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObject(forKey: keys.name) as? String ?? ""
self. labelName = aDecoder.decodeObject(forKey: keys. labelName) as? String ?? ""
}
func encode(with aCoder: NSCoder) {
aCoder.encode(self.emailId, forKey: keys.name)
aCoder.encode(self.userId, forKey: keys.labelName)
}
}
我该怎么做?只是你的文件夹类继承了NSObject,比如->类文件夹到类文件夹:NSObject
class Folder: NSObject, NSCoding {
var name: String
var labelName: String
.....
struct keys {
static let name = "name"
static let labelName = "labelName"
}
init (name: String, labelName: String .....)
{
self.name = name
self.labelName = labelName
......
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObject(forKey: keys.name) as? String ?? ""
self. labelName = aDecoder.decodeObject(forKey: keys. labelName) as? String ?? ""
}
func encode(with aCoder: NSCoder) {
aCoder.encode(self.emailId, forKey: keys.name)
aCoder.encode(self.userId, forKey: keys.labelName)
}
}