Iphone 通过App Delegate在视图之间共享数据

Iphone 通过App Delegate在视图之间共享数据,iphone,cocoa-touch,Iphone,Cocoa Touch,我有一个关于在视图之间共享数据的问题,希望它不是太基本。我在appDelegate中有一个NSMutableArray,带有say(Object1、Object2、Object3)。创建新对象(并将其添加到阵列中)时,我需要在下一个视图中访问该对象。以前我只是将对象传递到下一个视图,但这变得很混乱,似乎是错误的 现在我把所有的对象放在一个地方,但是我怎么能在下一个视图中访问对象(刚刚创建的对象),因为我不知道它添加到了什么索引中?我是否需要在每次创建对象时检查数组的计数,然后从中确定数组索引并将

我有一个关于在视图之间共享数据的问题,希望它不是太基本。我在appDelegate中有一个NSMutableArray,带有say(Object1、Object2、Object3)。创建新对象(并将其添加到阵列中)时,我需要在下一个视图中访问该对象。以前我只是将对象传递到下一个视图,但这变得很混乱,似乎是错误的

现在我把所有的对象放在一个地方,但是我怎么能在下一个视图中访问对象(刚刚创建的对象),因为我不知道它添加到了什么索引中?我是否需要在每次创建对象时检查数组的计数,然后从中确定数组索引并将该索引值传递给下一个视图?或者有没有一种方法可以通过某种唯一的名称从NSMutable数组中检索对象

另一个解决方案是迭代所有对象,直到找到我想要的对象,但我想知道什么是正确的方法。谢谢你抽出时间

编辑:谢谢你的回复,我会澄清我想做什么。我有一个NavigationController,您进入的每个视图都需要访问该对象。你可以把它想象成一本书。您选择要阅读的书的第一个视图,然后每个视图都是您选择的书中的一页。在App中,Delegate是所有书籍的数组。你会把每一页都递给我看这本书吗


请记住,这是一个粗略的例子,因为当你选择这本书时,你已经知道它所在的索引了。假设你创建了一本书,那么你还不知道它在数组中的什么位置。

我不确定你说的是在不同的控件之间共享对象,还是在说不同的视图控制器,比如主细节视图,尽管我怀疑这就是你的意思

在这种情况下,如果您有一个专门用于编辑单个对象的详细视图,在我看来,为该视图控制器提供一个要编辑的对象并不是错误的。如果您正在维护一个数组,您仍然可以将新对象添加到数组中,并在将该对象放到屏幕上之前将其分配给新的视图控制器


如果您能更具体地介绍一下应用程序的工作方式,我可能会给您一些更好的帮助。

我不太确定您所说的是在不同的控件之间共享对象,还是在谈论不同的视图控制器,比如主视图-详细视图,尽管我怀疑这就是您的意思

在这种情况下,如果您有一个专门用于编辑单个对象的详细视图,在我看来,为该视图控制器提供一个要编辑的对象并不是错误的。如果您正在维护一个数组,您仍然可以将新对象添加到数组中,并在将该对象放到屏幕上之前将其分配给新的视图控制器


如果您能更具体地说明应用程序的工作方式,我可能会给您提供更好的帮助。

如果您可以为每个对象创建一个有意义的唯一名称,只需使用
NSMutableDictionary
并让控制器通过指定键来访问数据。像这样:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSString *obj = [appDelegate.dict objectForKey:@"unique-name-here"];

希望这会有所帮助。

如果您可以为这些对象中的每一个创建一个有意义的唯一名称,只需使用
NSMutableDictionary
并让控制器通过指定键来获取数据。像这样:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSString *obj = [appDelegate.dict objectForKey:@"unique-name-here"];

希望能有所帮助。

我想这才是我真正想要的。非常感谢。如果您要在多个方法中从多个不同的位置访问数据,您可能希望使用以下说明为整个类定义此方法:使用app委托服务数据可能很危险。请参阅本文:相反,我建议使用NSNotification或delegation来提醒您的从属视图对象已更新。我认为这才是我真正想要的。非常感谢。如果您要在多个方法中从多个不同的位置访问数据,您可能希望使用以下说明为整个类定义此方法:使用app委托服务数据可能很危险。请看这篇文章:相反,我建议使用NSNotification或delegation来提醒您的从属视图对象已更新。感谢Alex尝试解密我的意思。我补充了一些说明,但我认为NSMutableDictionary可以完成这项工作。感谢Alex尝试解密我的意思。我补充了一些说明,但我认为NSMutableDictionary可以完成这项工作。