存储在应用程序委托中的对象似乎不存在

Posted

技术标签:

【中文标题】存储在应用程序委托中的对象似乎不存在【英文标题】:Object stored in the app delegate doesn't seem to persist 【发布时间】:2012-04-05 18:52:33 【问题描述】:

也许我误解了它应该如何工作,但我在应用程序委托中创建了一个对象,并在选项卡栏控制器上设置了该对象,但是当我转到其他选项卡时,它似乎没有已经存在了。

这是我在应用程序委托中唯一引用它的地方。

AppDelegate.h

@property (strong, nonatomic) Encounter *encounter;

AppDelegate.m

@synthesize encounter;

这是我在标签控制器的第一页上设置它的地方。这是唯一一次在初始选项卡控制器视图中引用它。 loadEncounter 方法只是将来自 web api 的 json 结果传递给它。然后我加载设置视图标签的值。

ehrxAppDelegate *app = [[UIApplication sharedApplication]delegate];
app.encounter = [[Encounter alloc] init];
[app.encounter loadEncounter:result];

nameLabel.text = app.encounter.subscriber_name;
locationlabel.text = app.encounter.location_name;
dateLabel.text = app.encounter.encounter_time;
genderLabel.text = app.encounter.subscriber_gender;
dobLabel.text = app.encounter.subscriber_dob;
statusLabel.text = app.encounter.admission_status;
detailsLabel.text = app.encounter.details;

这就是我在选项卡控制器的第二个视图中访问它的方式。我的印象是,因为我在第一个视图上设置了它的值,所以我可以在第二个视图上抓取它并再次使用它。

ehrxAppDelegate *app = [[UIApplication sharedApplication]delegate];
self.encounters = app.encounter.encounters;

[self.tableView reloadData];

【问题讨论】:

【参考方案1】:

app.encounter.encounters 在第一个视图中是否有效。由于您仍然可以访问 app.encounter ,因此该对象似乎在您的 vire 控制器中仍然存在。所以可能会遇到遇到.encounters 变量的问题。

encounters你是怎么设置的?

【讨论】:

这不完全是,但它太愚蠢了。我实际上并没有在我正在显示它们的视图上完成设置表格,这就是它们没有显示的原因。

以上是关于存储在应用程序委托中的对象似乎不存在的主要内容,如果未能解决你的问题,请参考以下文章

如何将托管对象上下文分配给 iOS 中的应用程序委托?

在哪里存储持久容器(或任何全局对象)? AppDelegate 还是场景委托?

appDelegate 中的委托功能不会更改导航栏颜色

应用程序委托中的全局变量未保存

委托分配导致 EXC_BAD_ACCESS

java动态代理