gpt4 book ai didi

ios - 如何快速将特定格式转换为任何对象?

转载 作者:行者123 更新时间:2023-11-30 13:22:44 25 4
gpt4 key购买 nike

当前格式

Optional(posterPrint.Frame(name: "RIBBA", productNumber: "303.016.24", productSize: (63.0, 93.0), pictureSize: (61.0, 91.0), pictureWithMatSize: (50.0, 70.0), frameColor: [UIDeviceRGBColorSpace 0.92549 0.92549 0.92549 1], matColor: [UIDeviceRGBColorSpace 0.92549 0.92549 0.92549 1]))

我想将其添加到数组并转换任何对象。我尝试了很多将此存储在 NSkeyedArchiver 中。我在某处读到元组无法存储在 NSKeyedArchiever 中。任何人都可以帮忙

提前致谢。

最佳答案

要使用NSKeyedArchiver,您需要使您的对象符合NSCoding。如果您有元组,则可以单独对元素进行编码/解码:

class MyObject: NSObject, NSCoding {
var id: Int
var size: (Float, Float)

init(id: Int, size: (Float, Float)) {
self.id = id
self.size = size

super.init()
}

required init?(coder aDecoder: NSCoder) {
guard let id = aDecoder.decodeObjectForKey("id") as? Int else { return nil }
guard let size0 = aDecoder.decodeObjectForKey("size.0") as? Float else { return nil }
guard let size1 = aDecoder.decodeObjectForKey("size.1") as? Float else { return nil }

self.id = id
self.size = (size0, size1)

super.init()
}

func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(id, forKey: "id")
aCoder.encodeObject(size.0, forKey: "size.0")
aCoder.encodeObject(size.1, forKey: "size.1")
}
}

您提到了数组,所以我不确定您是否在谈论自定义对象的数组,但现在您的对象符合 NSCoding,您现在可以存档和取消存档数组这些对象无需进一步努力。

<小时/>

同样,如果您有其他具有 MyObject 属性的对象,则可以对其应用 NSCoding,并且它可以利用 MyObject 已经符合 NSCoding:

class ParentObject: NSObject, NSCoding {
var name: String
var value: Int
var child: MyObject

init(name: String, value: Int, child: MyObject) {
self.name = name
self.value = value
self.child = child

super.init()
}

required init?(coder aDecoder: NSCoder) {
name = aDecoder.decodeObjectForKey("name") as! String
value = aDecoder.decodeObjectForKey("value") as! Int
child = aDecoder.decodeObjectForKey("child") as! MyObject

super.init()
}

func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeObject(value, forKey: "value")
aCoder.encodeObject(child, forKey: "child")
}
}

关于ios - 如何快速将特定格式转换为任何对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37611789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com