【发布时间】:2023-03-18 10:03:01
【问题描述】:
我正在将我的应用程序从同步 HTTP 请求转换为异步 HTTP 请求,并且遇到了一个问题,看起来需要对应用程序如何处理其数据进行大量修改。让我试着解释一下
以前是这样的:
-Class1、Class2 和 Class3 都是 UIViewController 的子类
- 助手类
-内容展示类
他们做的事情大相径庭,但共同的特点是他们与助手类的交互。它们以多种不同方式从用户那里收集请求的详细信息,然后最终将请求发送到帮助程序类。
当它同步完成时,助手类将返回数据。然后每个类将解释数据(XML 文件)并通过 segue 将它们传递给内容显示类
大体上是这样的:
第一类:
//Get user input
SomeData *data = [helperclass makerequest];
id vcData = [data process];
[self performSegueWithIdentifier:@"segueIdentifier"];
---
- (void)prepareForSegue:(UIStoryboardSegue *)segue
{
DestinationViewController *destination = (DestinationViewController *)segue.destinationViewController;
destination.data = vcData;
}
内容展示类:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.data presentdata];
}
现在看起来像这样
我通过首先使其与 Class1 一起工作来解决此问题,以便将修复程序部署到 class2 和 class3。所以 class1 和 helper 现在像这样交互
第一类:
//Get user input
SomeData *data = [helperclass makerequestWithSender:self];
id vcData = [data process];
[self performSegueWithIdentifier:@"segueIdentifier"];
---
- (void)prepareForSegue:(UIStoryboardSegue *)segue
{
DestinationViewController *destination = (DestinationViewController *)segue.destinationViewController;
destination.data = vcData;
}
现在我面临的最大问题是如何将 helperclass 中的数据返回到Class1。我设法让它工作了
(void)makeRequestWithSender:(Class1*)sender
{
[NSURLConnection sendAsynchronousRequest:...
{
[sender sendData:data];
}
}
但是,当我将其推广到其他 2 个 GUI 类别时,这将构成我遇到困难的请求。我的第一个想法是设置sender:(id),但在[sender sendData:data] 行失败,告诉我id 没有sendData: 或类似方法。
希望我在这里不是太含糊,你们可以提供帮助。如果需要,我将能够发布代码 sn-ps,但现在任何人都可以就如何构造此请求的代码提供更好的建议吗?
【问题讨论】:
标签: iphone ios objective-c ipad oop