gpt4 book ai didi

swift - 不同 UIViewController 中变量的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 10:08:08 26 4
gpt4 key购买 nike

我有两个 UIViewController(MasterDetail 简单来说)。在我的 Master Controller 中,我有一个带有一些对象列表的 tableView,我正在使用 Detail Controller 来显示详细信息并更改一些属性这些对象。

这看起来非常直接和简单。

假设我有一个具有这种结构的对象:

class User {
var name = ""
var lastPoints:[LastPoint] = []
}

在我的 Master Controller 中,我将显示用户列表,在我的 Detail Controller 中,我希望能够删除 lastPoints

所以在我的 Master ControllerdidSelectRowAt 中我有:

let suVC = ShowUserViewController()
suVC.currentUser = self.usersToShow[indexPath.row]
self.navigationController?.pushViewController(suVC, animated: true)

然后我就可以在我的 Detail Controller 中使用这个新变量了。例如,我可以删除 currentUser 中的最后一个点。

问题是,这个 lastPoint 也会立即从 Master Controllerself.usersToShow[indexPath.row] 中删除,并且我需要避免这种情况(而且我还想了解这种行为的原因是什么:是的,对于大多数情况来说这似乎合乎逻辑甚至方便,但我不记得以前项目中的这种行为)。

最佳答案

原因很简单,类数组是引用类型,所以将其更改为

struct User {
var name = ""
var lastPoints:[LastPoint] = []
}

其中struct是一个值类型

关于swift - 不同 UIViewController 中变量的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088617/

26 4 0
文章推荐: javascript - 在 IE 中,如何找到