gpt4 book ai didi

swift - 在具有枚举数组作为属性的自定义类上使用 NSCoding

转载 作者:行者123 更新时间:2023-11-28 06:55:59 26 4
gpt4 key购买 nike

我正在尝试能够序列化和解码自定义类。该类本身有一个属性,它是一个枚举数组,如下所示:

(我已经阅读了如何使用原始值并将其序列化,但我还没有弄清楚如何使用这样的数组来做到这一点)。

enum WeekDays : String {

case Sunday = "Sunday"
case Monday = "Monday"
case Tuesday = "Tuesday"
case Wednesday = "Wednesday"
case Thursday = "Thursday"
case Friday = "Friday"
case Saturday = "Saturday"
}

class User: NSObject, NSCoding {

var name : String
var workDays : [WeekDays]

init(name: String, workDays: [WeekDays]) {

self.name = name
self.workDays = workDays
}

required init(coder aDecoder: NSCoder) {

self.name = aDecoder.decodeObjectForKey("name") as! String
// self.workDays = ????
}

func encodeWithCoder(aCoder: NSCoder) {

aCoder.encodeObject(self.name, forKey: "name")
// aCoder.encodeObject(self.workDays, forKey: "workDays")
}

}

最佳答案

如何遵循书中提出的 Matt Neuburg 的想法“对象类型”一章中的“使用 Swift 的 iOS 9 编程基础知识”:

根据他的说法,一个优雅的解决方案(在 WWDC 2015 视频中建议)是教编码员类 NSCoder 当 forKey: 参数是 WeekDays 而不是 String 时该怎么做。因此,在扩展中,您可以重载 encodeObject:forKey: 方法:

extension NSCoder {
func encodeObject(objv: AnyObject?, forKey key: WeekDays) {
self.encodeObject(objv, forKey:key.rawValue)
}
}

然后我会尝试遍历一组 WeekDays 并将所有需要的值粘合为一个长字符串,例如:“Sunday|Monday|...”

关于swift - 在具有枚举数组作为属性的自定义类上使用 NSCoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635801/

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