gpt4 book ai didi

arrays - 使用 Swift 3 存储自定义对象数组

转载 作者:行者123 更新时间:2023-11-30 12:22:38 24 4
gpt4 key购买 nike

我知道其他人问过这个问题,但是,我正在努力在自己的项目中实现该解决方案。我正在为学校创建一个日程应用程序,我想将用户的类(class)存储在 ClassInfo 对象的数组中。这是创建对象的 ClassInfo 类:

class ClassInfo: NSObject {
var name = String()
var room = String()
var period = Int()

init(name: String, room: String, period: Int) {
self.name = name
self.room = room
self.period = period
}

required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObject(forKey: "name") as! String
self.room = aDecoder.decodeObject(forKey: "room") as! String
self.period = aDecoder.decodeObject(forKey: "period") as! Int
}

func encode(with aCoder: NSCoder) {
aCoder.encode(self.name, forKey: "name")
aCoder.encode(self.room, forKey: "room")
aCoder.encode(self.period, forKey: "period")
}
}

在我的初始 View Controller 中,我创建了这样的类数组:

var classes = [ClassInfo]()
let defaults = UserDefaults.standard

这是我向数组添加类的代码:

let c = ClassInfo(name: className.text!, room: roomNumber.text!, period: period.selectedSegmentIndex + 1)
classes.insert(c, at: periodsSelected.index(of: period.selectedSegmentIndex + 1)!)
//How do I actually update the array in UserDefaults?

最后,我想获取数组中的类并将它们放入 UITableView 中。这是我迄今为止执行此操作的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("ScheduleTableViewCell", owner: self, options: nil)?.first as! ScheduleTableViewCell
cell.classLabelView.text = "\(classes[indexPath.row].name)"
cell.classPeriodLabel.text = "\(classes[indexPath.row].period)"
cell.roomLabel.text = "\(classes[indexPath.row].room)"
cell.isUserInteractionEnabled = true
cell.selectionStyle = .none
return cell
}

基本上,我只想使用自定义 ClassInfo 对象保存用户的类(class),该对象具有类(class)名称、期间和房间号。

最佳答案

  1. How do I actually update the array in UserDefaults?

您必须将其替换为之前存储的值。

而且由于您正在制作自定义对象数组,因此您必须首先将其转换为 NSData 或 Data,然后将其存储在 UserDefaults 中,例如:

UserDefaults.standard.set("ENTER_YOUR_DATA", forKey:"ENTER_YOUR_TAG")
UserDefaults.standard.synchronise()
  1. Why are you using NSObject ?

您可以通过使用结构体来执行相同的操作并节省内存,只需使函数可变即可实现相同的功能。

关于arrays - 使用 Swift 3 存储自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608462/

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