// // PLJob.swift // IOS_study // // Created by CC-star on 2025/6/28. // import Foundation //添加或修改属性之后-->重新生成codingkeys(加上String),修改decode,注释decode,重新生成init,打开decode注释 struct PLJob: Identifiable, Codable {//遵循莫个协议,Codable:编/解码合体 var id = UUID().uuidString//id var isActive = true//是否上线 var title = ""//标题 var business = "互联网"//行业 var tax = "详谈"//是否报税 var hourlyWage = 100//时给 var wantNum = 3//招几人 var contactType = "微信"//联系方式类型 var contact = ""//联系方式 //工作时间地点内容 var startHour = 10//开始时间 var startMin = 0//开始分钟 var endHour = 20//结束时间 var endMin = 0//结束分钟 //点击状态 var has2 = false//是否第二个时间 //第二个时间 var startHour2 = 10//开始时间 var startMin2 = 0//开始分钟 var endHour2 = 20//结束时间 var endMin2 = 0//结束分钟 var otherTime = ""//其他时间 var placeName = ""//完整地址 var province = "北京"//省份 var city = ""//城市 var workContent = ""//工作内容 //工作要求 var needExp = "1-3年"//经验 var needEdu = "本科"//学历 var needLan = "Swift"//语言 var needFrame = "SwiftUI"//框架 var otherNeed = ""//其他要求 //福利 var moveFee = true//交通费 var noOverTime = true//不加班 var otherBenefit = ""//其他福利 //其他 var companyName = ""//公式名 var userID = ""//用户id //var creatTime = "" var updatedAt = Date()//更新时间 var wantWorkNum = 0//几人想去 enum CodingKeys: String,CodingKey { case id case isActive case title case business case tax case hourlyWage case wantNum case contactType case contact case startHour case startMin case endHour case endMin case has2 case startHour2 case startMin2 case endHour2 case endMin2 case otherTime case placeName case province case city case workContent case needExp case needEdu case needLan case needFrame case otherNeed case moveFee case noOverTime case otherBenefit case companyName case userID case updatedAt case wantWorkNum } init(from decoder: any Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.id = try container.decode(String.self, forKey: .id) self.isActive = try container.decodeIfPresent(Bool.self, forKey: .isActive) ?? true self.title = try container.decodeIfPresent(String.self, forKey: .title) ?? "" self.business = try container.decodeIfPresent(String.self, forKey: .business) ?? "互联网" self.tax = try container.decodeIfPresent(String.self, forKey: .tax) ?? "详谈" self.hourlyWage = try container.decodeIfPresent(Int.self, forKey: .hourlyWage) ?? 100 self.wantNum = try container.decodeIfPresent(Int.self, forKey: .wantNum) ?? 3 self.contactType = try container.decodeIfPresent(String.self, forKey: .contactType) ?? "微信" self.contact = try container.decodeIfPresent(String.self, forKey: .contact) ?? "" self.startHour = try container.decodeIfPresent(Int.self, forKey: .startHour) ?? 10 self.startMin = try container.decodeIfPresent(Int.self, forKey: .startMin) ?? 0 self.endHour = try container.decodeIfPresent(Int.self, forKey: .endHour) ?? 20 self.endMin = try container.decodeIfPresent(Int.self, forKey: .endMin) ?? 0 self.has2 = try container.decodeIfPresent(Bool.self, forKey: .has2) ?? false self.startHour2 = try container.decodeIfPresent(Int.self, forKey: .startHour2) ?? 10 self.startMin2 = try container.decodeIfPresent(Int.self, forKey: .startMin2) ?? 0 self.endHour2 = try container.decodeIfPresent(Int.self, forKey: .endHour2) ?? 20 self.endMin2 = try container.decodeIfPresent(Int.self, forKey: .endMin2) ?? 0 self.otherTime = try container.decodeIfPresent(String.self, forKey: .otherTime) ?? "" self.placeName = try container.decodeIfPresent(String.self, forKey: .placeName) ?? "" self.province = try container.decodeIfPresent(String.self, forKey: .province) ?? "浙江" self.city = try container.decodeIfPresent(String.self, forKey: .city) ?? "" self.workContent = try container.decodeIfPresent(String.self, forKey: .workContent) ?? "" self.needExp = try container.decodeIfPresent(String.self, forKey: .needExp) ?? "1-3年" self.needEdu = try container.decodeIfPresent(String.self, forKey: .needEdu) ?? "本科" self.needLan = try container.decodeIfPresent(String.self, forKey: .needLan) ?? "Swift" self.needFrame = try container.decodeIfPresent(String.self, forKey: .needFrame) ?? "SwiftUI" self.otherNeed = try container.decodeIfPresent(String.self, forKey: .otherNeed) ?? "" self.moveFee = try container.decodeIfPresent(Bool.self, forKey: .moveFee) ?? true self.noOverTime = try container.decodeIfPresent(Bool.self, forKey: .noOverTime) ?? true self.otherBenefit = try container.decodeIfPresent(String.self, forKey: .otherBenefit) ?? "" self.companyName = try container.decodeIfPresent(String.self, forKey: .companyName) ?? "" self.userID = try container.decodeIfPresent(String.self, forKey: .userID) ?? "" self.updatedAt = try container.decodeIfPresent(Date.self, forKey: .updatedAt) ?? Date() self.wantWorkNum = try container.decodeIfPresent(Int.self, forKey: .wantWorkNum) ?? 0 } // func encode(to encoder: any Encoder) throws { // var container = encoder.container(keyedBy: CodingKeys.self) // try container.encode(self.id, forKey: .id) // try container.encode(self.isActive, forKey: .isActive) // try container.encode(self.title, forKey: .title) // try container.encode(self.business, forKey: .business) // try container.encode(self.tax, forKey: .tax) // try container.encode(self.hourlyWage, forKey: .hourlyWage) // try container.encode(self.wantNum, forKey: .wantNum) // try container.encode(self.contactType, forKey: .contactType) // try container.encode(self.contact, forKey: .contact) // try container.encode(self.startHour, forKey: .startHour) // try container.encode(self.startMin, forKey: .startMin) // try container.encode(self.endHour, forKey: .endHour) // try container.encode(self.endMin, forKey: .endMin) // try container.encode(self.has2, forKey: .has2) // try container.encode(self.startHour2, forKey: .startHour2) // try container.encode(self.startMin2, forKey: .startMin2) // try container.encode(self.endHour2, forKey: .endHour2) // try container.encode(self.endMin2, forKey: .endMin2) // try container.encode(self.otherTime, forKey: .otherTime) // try container.encode(self.placeName, forKey: .placeName) // try container.encode(self.province, forKey: .province) // try container.encode(self.city, forKey: .city) // try container.encode(self.workContent, forKey: .workContent) // try container.encode(self.needExp, forKey: .needExp) // try container.encode(self.needEdu, forKey: .needEdu) // try container.encode(self.needLan, forKey: .needLan) // try container.encode(self.needFrame, forKey: .needFrame) // try container.encode(self.otherNeed, forKey: .otherNeed) // try container.encode(self.moveFee, forKey: .moveFee) // try container.encode(self.noOverTime, forKey: .noOverTime) // try container.encode(self.otherBenefit, forKey: .otherBenefit) // try container.encode(self.companyName, forKey: .companyName) // try container.encode(self.userID, forKey: .userID) // try container.encode(self.updatedAt, forKey: .updatedAt) // try container.encode(self.wantWorkNum, forKey: .wantWorkNum) // } init(id: String = UUID().uuidString, isActive: Bool = true, title: String = "", business: String = "互联网", tax: String = "详谈", hourlyWage: Int = 100, wantNum: Int = 3, contactType: String = "微信", contact: String = "", startHour: Int = 10, startMin: Int = 0, endHour: Int = 20, endMin: Int = 0, has2: Bool = false, startHour2: Int = 10, startMin2: Int = 0, endHour2: Int = 20, endMin2: Int = 0, otherTime: String = "", placeName: String = "", province: String = "浙江", city: String = "", workContent: String = "", needExp: String = "1-3年", needEdu: String = "本科", needLan: String = "Swift", needFrame: String = "SwiftUI", otherNeed: String = "", moveFee: Bool = true, noOverTime: Bool = true, otherBenefit: String = "", companyName: String = "", userID: String = "", updatedAt: Date = Date(), wantWorkNum: Int = 0) { self.id = id self.isActive = isActive self.title = title self.business = business self.tax = tax self.hourlyWage = hourlyWage self.wantNum = wantNum self.contactType = contactType self.contact = contact self.startHour = startHour self.startMin = startMin self.endHour = endHour self.endMin = endMin self.has2 = has2 self.startHour2 = startHour2 self.startMin2 = startMin2 self.endHour2 = endHour2 self.endMin2 = endMin2 self.otherTime = otherTime self.placeName = placeName self.province = province self.city = city self.workContent = workContent self.needExp = needExp self.needEdu = needEdu self.needLan = needLan self.needFrame = needFrame self.otherNeed = otherNeed self.moveFee = moveFee self.noOverTime = noOverTime self.otherBenefit = otherBenefit self.companyName = companyName self.userID = userID self.updatedAt = updatedAt self.wantWorkNum = wantWorkNum } static let job = PLJob(title: "iOS程序员", tax: "报税", contact: "12345", has2: true, startHour2: 14, endHour2: 22, otherTime: "可以根据实际情况调整", placeName: "阿里巴巴西溪园区", province: "浙江", city: "杭州", workContent: "iOS开发啊啊iOS开发啊啊iOS开发啊啊iOS开发啊啊iOS开发啊啊iOS开发啊啊", otherNeed: "什么都不需要啊啊什么都不需要啊啊什么都不需要啊啊什么都不需要啊啊", otherBenefit: "什么都有啊啊什么都有啊啊什么都有啊啊什么都有啊啊什么都有啊啊",companyName:"阿里巴巴") }