gpt4 book ai didi

ios - 快速在 View Controller 之间通过引用传递数组

转载 作者:行者123 更新时间:2023-11-30 13:34:34 26 4
gpt4 key购买 nike

使用 Objective-C 时,我只需在 中分配一个属性,即可将 NSMutableArray 从一个 View Controller VC_A 传递到另一个 VC_B >VC_B

VC_B.list = self.list

其中 self 是 VC_A

当 View Controller 从导航堆栈中弹出时,它允许在 VC_B 中对列表进行的更改在 VC_A 的列表中看到。

然而,在 Swift 中,由于数组是按值传递的,因此上面的分配不起作用,所以我陷入了如何解决这个问题的困境。现在处理这个问题的正确方法是什么?

最佳答案

您仍然可以在 Swift 中通过将属性设为 NSMutableArray 来实现此目的,就像以前一样。如果您需要的话,基础类型仍然存在。但这在 ObjC 和 Swift 中都是糟糕的设计。它会在远处创建令人毛骨悚然的 Action (当事情神奇地改变不属于调用一部分的值时),并且可能会破坏 MVC(如果数据是持久的,它应该存在于模型中,而不是 View Controller 中)。

Cocoa 中有两种常见的模式:将数据存储在模型中,或者通过委托(delegate)传递数据。

如果这个数组表示某种持久状态(例如系统中的项目列表),那么它属于模型层,并且两个 View Controller 都应该在那里读取和操作它,而不是通过彼此通信。 (参见Model-View-Controller。)

如果这个数组是暂时的数据(例如从列表中选择),那么调用 VC 应该将自己设置为接收 VC 的委托(delegate),并且当接收 VC 完成时,它应该将数据传递回它的代表。 (参见Delegates and Data Sources。)

关于ios - 快速在 View Controller 之间通过引用传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223820/

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