首页 > 解决方案 > 不同 UIViewController 中变量的奇怪行为

问题描述

我有两个 UIViewControllers(简单地说)MasterDetail在我的Master Controller我有tableView一些对象列表,我Detail Controller用来显示细节和更改这些对象的一些属性。

它看起来非常简单明了。

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

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

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

所以在didSelectRowAt我的Master Controller我有:

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

之后我就可以在我的Detail Controller. 例如,我可以删除currentUser.

问题是,这lastPoint也将立即被删除self.usersToShow[indexPath.row]Master Controller我需要避免这种情况(而且我想了解这种行为的原因是什么:是的,在大多数情况下这似乎合乎逻辑甚至方便,但我可以'不记得以前项目中的这种行为)。

标签: swift

解决方案


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

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

struct值类型在哪里


推荐阅读