Je comprends que d'autres personnes ont posé cette question, mais j'ai du mal à mettre en œuvre la solution dans mon propre projet. Je crée une application de planification pour l'école et je souhaite stocker les classes de l'utilisateur dans un tableau d'objets ClassInfo. Voici ma classe ClassInfo qui crée l'objet:Stockage d'un tableau d'objets personnalisés à l'aide de Swift 3
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")
}
}
Dans mon contrôleur de vue initial, je crée le tableau de classes comme ceci:
var classes = [ClassInfo]()
let defaults = UserDefaults.standard
Ceci est mon code pour ajouter une classe au tableau :
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?
Et enfin, je voudrais prendre les classes dans le tableau et les mettre dans un UITableView. Voici le code que j'ai jusqu'à présent pour le faire:
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
}
Fondamentalement, je veux juste sauver les classes de l'utilisateur à l'aide de mon objet ClassInfo personnalisé qui a un nom de classe, période, et le numéro de chambre.