如何在默认用户中保存对象列表? [英] How to save list of object in user Default?
本文介绍了如何在默认用户中保存对象列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的对象是:
struct Order: Codable {
var item_id:String = ""
var quantity:Int = 0
var image:String = ""
var name:String = ""
var desc:String = ""
}
函数的类别是:
class func saveOrder(value: [Order]) {
print(value)
let placesData = NSKeyedArchiver.archivedData(withRootObject: value)
UserDefaults.standard.set(placesData, forKey: "orderHistoryArray")
}
class func getOrder() -> [Order] {
if let order = UserDefaults.standard.array(forKey: "orderHistoryArray") {
return order as! [Order]
}
return []
}
当我尝试使用此功能时:
when i try to use this function :
SavedData.saveOrder(value: itemsInCart)
它不和我一起工作,有什么帮助吗?!!!
it's not working with me , any help ?!!!
推荐答案
我使用此类来解决该问题:
I use this class to solve that :
class Order: NSObject, NSCoding {
var item_id:String = ""
var quantity:String = ""
var image:String = ""
var name:String = ""
var desc:String = ""
init(item_id: String ,quantity : String , image : String , name: String, desc: String){
self.item_id = item_id
self.quantity = quantity
self.image = image
self.name = name
self.desc = desc
}
func encode(with aCoder: NSCoder) {
aCoder.encode(item_id, forKey: "item_id")
aCoder.encode(quantity, forKey: "quantity")
aCoder.encode(image, forKey: "image")
aCoder.encode(name, forKey: "name")
aCoder.encode(desc, forKey: "desc")
}
required init?(coder aDecoder: NSCoder) {
self.item_id = aDecoder.decodeObject(forKey: "item_id") as! String
self.quantity = aDecoder.decodeObject(forKey: "quantity") as! String
self.image = aDecoder.decodeObject(forKey: "image") as! String
self.name = aDecoder.decodeObject(forKey: "name") as! String
self.desc = aDecoder.decodeObject(forKey: "desc") as! String
}
}
然后我使用此功能来使用它
then i use this functions to use it
class func save(value : Order){
var orderArray:[Order] = retrive()
orderArray.append(value)
let orderArrayAchived = NSKeyedArchiver.archivedData(withRootObject: orderArray)
UserDefaults.standard.set(orderArrayAchived, forKey: "orderArray")
}
class func saveListOfOrder(value: [Order]) {
print(value)
let cartArrayAchived = NSKeyedArchiver.archivedData(withRootObject: value)
UserDefaults.standard.set(cartArrayAchived, forKey: "orderArray")
}
class func retrive()-> [Order]{
let orderData = UserDefaults.standard.object(forKey: "orderArray") as? NSData
if orderData == nil
{
return [Order]()
}
let orderArray = NSKeyedUnarchiver.unarchiveObject(with: orderData! as Data) as? [Order]
return orderArray!
}
这篇关于如何在默认用户中保存对象列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文