gpt4 book ai didi

ios - Swift - 暂存值(value)变更的最佳实践

转载 作者:行者123 更新时间:2023-11-29 05:08:14 24 4
gpt4 key购买 nike

我不知道如何将其表述为一个足够简洁的问题供谷歌搜索。我正在尝试找出在特定 View 中暂存值更改的最佳方法,用户将在该 View 中进行更改并能够保存或放弃它们。

例如,这是一个非常简化的场景:

class ClassToSave {
var quantity = 0
}

现在,假设我有一个 View ,用户可以在其中编辑此数量。我正在尝试找出在用户保存时跟踪这些更改的最佳方法,以便我可以看到旧数量是这个,新数量是那个。

一个想法是复制对象,这很糟糕,因为复制函数必须填充类中的所有变量,而且我肯定会忘记添加的任何新变量。

另一种方法是在类中包含该类类型的一个元素,称为“pendingChanges”或其他名称:

class ClassToSave {
var quantity = 0
var pendingChanges = ClassToSave()
}

但是,这与复制功能、维护几乎是同一个问题。待处理类中的值需要在某个时刻进行设置。在我看来,这绝对比使用复制功能更有意义。

另一个是有一个专门的类来跟踪更改,因为我不需要跟踪类中的每个变量。通常只有少数。

我能想到的最后也是最草率的方法是在 View Controller 中使用变量来存储挂起的值。

我确信这种事情有一个标准。我只是不知道,也找不到任何相关信息。

谢谢!

最佳答案

这是一个非常简单的问题,也有一个非常简单的答案。使用结构而不是类,它们正是针对这种情况而设计的:

struct ClassToSave: Equatable {
var quantity = 0
}

// this is your original data
var original = ClassToSave(quantity: 1)

// this is a copy, with changes
var current = original
current.quantity = 10

// you can compare them
let hasChanges = (original != current)

关于ios - Swift - 暂存值(value)变更的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957720/

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