[英]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
,它是一个datasource
和delegate
。 它负责提供要在表视图上显示的用户列表。 这些用户列表取自数组“ 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.