繁体   English   中英

将对象传递给Objective-C中另一个类的最佳方法是什么?

[英]What is the best way to pass an object to another class in Objective-C?

经过几个月的不间断学习,我真的很喜欢在我的第一个应用程序上工作。 有机会做了一个慈善的iOS App。 这是一个非常基本的应用程序,但我现在遇到了麻烦,希望获得一些帮助。

我有以下视图控制器和一个类:

PeopleViewController (datasource and delegate, also holds "people" NSMuteable array)
PersonViewController
Person

我有一个PersonViewController并且此控制器连接到一个视图,该视图显示带有一些文本字段和图像上载选项的表单。 它的最底部有一个提交按钮,该按钮与一个动作收集在一起,该动作从字段中收集所有数据。 那就是我打算做的。

我有一个PeopleViewController ,它是一个datasourcedelegate 它负责提供要在表视图上显示的用户列表。 这些用户列表取自数组“ people”。 当前,我正在人员视图控制器的viewDidLoad方法中填充数组。 最终, datasource将是客户数据库,但目前此数组充当该数据库。

我想做的是一些如何从存储在Person类实例中的PersonViewController获取数据到PeopleViewController数组中。 点击PersonViewController表单的PersonViewController按钮时,将创建Person的实例,然后将字段中的数据存储在该新对象中。 问题是在viewDidLoad期间填充了人员数组。

问题:

如何将PersonViewController新创建并填充的Person对象放入PeopleViewController类的people数组中?

实现这一目标的最佳方法是什么?

我是说对了吗?在运行viewDidLoad之后,持有现有“人”的人数组仍然存在于堆中,我可以通过一些方法将新创建的对象添加到该数组中吗?

有点困惑。

我想到了一些方法,但有些看起来很乏味。 我想看看经验丰富的开发人员如何做到这一点,并理解原因。

问候

首先,您的数组必须是NSMutableArray,否则您将无法从数组中添加或删除对象。

一旦确定阵列是可变的,就可以调用

[personArray addObject:newPerson];

即使将数组填充到viewDidLoad ,也可以执行此操作。 请注意,将项目添加到阵列只是一个步骤,您仍然需要更新用户界面。

编辑:
要将新创建的Person对象从一个控制器传递到另一个控制器,您有几种选择。 如果PersonViewController具有指向PeopleViewcontroller的指针,则只需将数组设为公共属性即可。

[myPeopleViewController.personArray addObject...]

真的很难回答这个问题,因为我需要查看如何实例化两个ViewController,以及它们之间的关系是什么。

也许Singleton对您来说很有趣。 特别是如果您将增强您的应用程序以与其他ViewController共享数据。

这是一个学习DesignPattern和Singleton的好网站,网址为http://www.raywenderlich.com/46988/ios-design-patterns

希望这对您有所帮助,并能在iOS上玩得开心。

格尔茨

我最初所做的是在表单提交按钮上附加了一个操作。 然后,我声明了一个实例变量,并在操作中对其进行了初始化。 当时的印象是我可以在我的prepareforsegue方法中获取实例并访问它在操作中设置的属性,但是当尝试从对象实例读取属性时,我一直得到null。

我删除了该动作并删除了它的连接,然后初始化了一个新对象以将文本字段值存储在prepareforsegue方法内,这对我来说很好用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM