You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB

import Foundation
extension Nounours {
struct Data: Identifiable {
public let id: UUID
public var name: String
public var hairCount: Int32
public var date: Date
}
var data: Data {
Data(id: self.id, name: self.name, hairCount: self.hairCount, date: self.date)
}
mutating func update(from data: Data) {
guard data.id == self.id else { return }
self.name = data.name
self.hairCount = data.hairCount
self.date = data.date
}
}
public class NounoursVM : ObservableObject {
var original: Nounours = Nounours(id: UUID(), name: "", hairCount: 0, date: Date())
@Published var model: Nounours.Data
@Published var isEdited = false
init(original: Nounours) {
self.original = original
model = original.data
}
func onEditing() {
model = original.data
isEdited = true
}
func onEdited(isCancel: Bool = false) {
if (!isCancel) {
original.update(from: model)
}
isEdited = false
}
}