【问题标题】:Share NSArray data between two ViewControllers [duplicate]在两个 ViewController 之间共享 NSArray 数据 [重复]
【发布时间】:2013-08-05 10:16:03
【问题描述】:

我正在构建一个应用程序,希望在两个不同的视图控制器之间共享一个可变的 NSArray。

原因是因为在一个视图控制器(主)上,我需要主动检查数组的内容,如果满足某些属性会显示警报,而另一个视图控制器(UI)是用户的 UI将警报对象设置到所述数组中并在表格视图中管理警报对象。

所以我的问题是这个数组可能驻留在我的应用程序委托中的什么位置?

或者我最好让它驻留在主(根视图控制器)中并基本上将其传递给第二个 UI 视图控制器并每次动态填充 UItableview,然后将其传回以更新主上的数组?

【问题讨论】:

  • 也许看看委托设计模式,你应该能够根据你的情况来制作它。 enroyed.com/ios/…
  • 属性是否特定于视图或模型的状态?如果是模型,那么数据应该驻留在模型类中。如果是视图,那么主视图控制器可能会工作,可以通过委托模式进行更新。
  • @OliverAtkinson,感谢您的评论,是的,我对委托很熟悉,但这不会是这个范式基本上是一个驻留在刚刚来回传递的视图控制器之一中的数组吗?

标签: iphone ios objective-c cocoa-touch


【解决方案1】:

有很多方法可以做到这一点。这取决于您的 viewController 和您的问题的层次结构。

你可以:

等等


【讨论】:

  • +1 获取大量备选方案。有见地。我很高兴你没有包含 AppDelegate、Sqlite 或 NSUserDefaults
  • 是的,我一开始认为它至少值得一提,但后来我意识到它毫无价值。如果其他人记得其他有效方法,请在此处发表评论,我将编辑答案
  • @LucasEduardo 我现在有点困惑!你知道我已经在两个视图控制器之间设置了一个委托(用于正确关闭模态呈现的 UI 视图控制器),所以我准备好使用我已经创建的委托协议来来回传递我的数组。 ...我可以将数组作为 UI viewcontrollers init 方法的参数传入!然后,当我将数组作为指针传递时,所做的任何更改都会立即反映出来,我什至不需要使用委托将其传回,我是否遗漏了什么??
  • 是的,那是正确的。当您传递一个指针时,它们将指向内存的相同位置,并且一个指针的任何更改都将被另一个指针反映。我的回答是来回传递数据的通用性,而不是专注于您的问题。
  • 好吧,在这种情况下可以使用委托,当您传递一个对象的副本时,有时您希望返回更改的值,有时又不需要,所以您传递一个副本而不是相同的引用,否则对象将始终被更改。在目标 C 中,没有直接通过“值”传递对象的方法,您必须传递它的副本,例如 [myArray copy]
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多