- html - 我的下拉菜单的内容关闭得太快
- c# - 使用 Html Agility Pack 从网页中的表中获取值而不使用 "SelectNode'
- html - 内容容器下的 CSS 下拉菜单
- html - 如何停止嵌套列表重叠父列表?
修订...
应用程序的关键是与数据库服务器通信。服务器对应用程序的响应都是 XML 格式的。有几个屏幕。例如,屏幕 1 列出了用户的信息,屏幕 2 列出了用户过去的交易,允许新交易,等等。
这是我的 AppDelegate 的一些代码:
StartViewController *svc = [[StartViewController alloc] init];
TradeViewController *tvc = [[TradeViewController alloc] init];
CashViewController *cvc = [[CashViewController alloc] init];
ComViewController *covc = [[ComViewController alloc] init];
PrefsViewController *pvc = [[PrefsViewController alloc] init];
NSMutableArray *tabBarViewControllers = [[NSMutableArray alloc] initWithCapacity:5];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:svc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:tvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:cvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:covc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
navigationController = [[UINavigationController alloc] initWithRootViewController:pvc];
[tabBarViewControllers addObject:navigationController];
navigationController = nil;
[tabBarController setViewControllers:tabBarViewControllers];
[[self window] setRootViewController:tabBarController];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
为了坚持 MVC 风格,我有一个单例类来完成所有“处理”。
现在举个例子,说明我是如何撞墙的……用户可以在屏幕 5 上更改他们的电子邮件地址。在文本字段中输入新的电子邮件地址,然后单击保存按钮。该按钮然后调用单例类中的一个方法,该方法将新的电子邮件地址发送到服务器并(通过 URL)并接收确认更改的 XML 响应。
这是我的问题:1. 在进行单例类方法调用之前,我从 View Controller 启动微调器 - 但不知道应用程序到服务器的发送/接收何时完成,如何让微调器在正确的时间停止?我不能从单例类中得到它,我试过了。据我所知,它必须来自 VC 内部,或者有没有办法改变我的单例类的 VC 输出?
单例类 NSURLConnection 正在处理我所有的通信。从简单的电子邮件更改到更新事务表的所有内容。这对我来说似乎是错误的,并且很难跟踪谁在调用什么。同样,我将按照我对 MVC 的解释进行。我认为为每个 VC 提供一个 NSURLConnection 并在这些类中进行一些处理会容易得多。然而,那不会是 MVC(ish)。
我的单例类中有将近 100 个变量、数组等……我用它们为我的所有 VC 赋值。这对我来说似乎也是错误的,但我想不出任何其他方式。
最佳答案
how can I distinguish in the NSURLConnection delegate (connectionDidFinishLoading) which URL call is being made?
每个委托(delegate)方法(例如 -connectionDidFinishLoading:
)都有一个 connection
参数,告诉您哪个连接发送了消息。一个给定的连接一次只能加载一个 URL,因此 URL 和连接之间存在一一对应关系。
How can I tell outside of "connectionDidFinishLoading" when the download is completed?
当连接完成时,该方法会告诉您。您可以将这些信息存储在对您的应用有用的地方。
更新:根据您添加的内容,您的“处理”类是您应用的模型。应用程序的其余部分不应该关心每个事务都涉及到服务器的消息——这只是模型的业务。此外,模型没有理由必须是单个对象(更不用说单例了)——它可以是一组协同工作的对象。
因此,您可能有一个类(我们称它为处理器),它表示应用程序与模型的接口(interface)(有些人甚至可能称其为“模型 Controller ”)。 Processor 的一个实例可能会创建一个本地数据库来存储应用程序的当前本地状态。您可能还会有一个 Transaction 类来表示与服务器的单个事务。事务可以创建请求、将其发送到服务器、获取响应、更新数据库并告诉处理器事务已完成。或者,也许当应用程序的某些其他部分(例如您的 View Controller 之一)要求处理器处理新事务时,处理器将请求对象传递给它创建的事务,以便事务可以直接更新请求者。
如果不知道您计划将应用带到哪里,很难说什么是您的应用的最佳计划,但通常的指导原则是:
将您的问题分解成更容易解决的部分
限制每个类的职责范围
如果事情看起来很复杂,那可能是
将您的模型分成几个类也会使其更容易测试。您可以想象为 Transaction 类编写一组单元测试是多么容易。处理器也是如此——如果服务器事务属于不同的类,则更容易测试处理器是否在做正确的事情。
关于objective-c - NSURLConnection 代表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10886237/
我正在寻找有关使用 NSURLConnection 异步请求的好教程。我一直在 stackoverflow 和谷歌中四处寻找,但找不到。这可能是无数类似此处问题的重复。但请指导我正确的教程,我以前使用
我在植入简单的 NSURLConnection 时遇到了这个奇怪的问题... 调用了 didReceiveData 方法,我很乐意尝试附加接收数据,但是... nada! 肯定有一些数据(如长度所示,
我是 iOS 互联网连接的新手。 我正在尝试从特殊站点获取数据。 以下代码适用于所有站点以查看 url 中的数据。 但是,如果我将其更改为特殊站点以获取他们的数据,它将返回 NULL! 我认为该站点如
在 iOS 9 中,我将 NSURL 与 NSURLConnection 一起使用,对于一个特定的 URL,它在 - (void)connection:(NSURLConnection *)conne
多个 NSURLConnections 正在启动(在单个 UIViewController 中)以收集不同类型的数据。当他们返回(-connectionDidFinishLoading)时,我想根据到
谁能帮助我理解这些问题:使用 Alamofire 优于 NSURLSession/NSURLConnection 有什么优势? NSURLSession 和 NSURLConnection 有什么区别
是否可以取消 NSURLConnection开始于 sendAsynchronousRequest:queue:completionHandler: ? 为什么不sendAsynchronousReq
你好, 我正在试验一个非常恶性的崩溃,它在设备日志中以下列方式显示: Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_I
这是一个开放性问题,旨在了解什么是我认为可能很常见的问题的最佳实践或最常见的解决方案。 假设我有一个要下载的 URL 列表;该列表本身托管在服务器上,因此我启动了一个 NSURLConnection
我基本上将RestKit与RKClient一起使用,并执行get请求。我的系统使用用户名/密码/帐户来认证用户。它只是用于用户名/密码的httpbasic,而帐户只是一个子域。 我的问题是,如果执行以
我尝试使用 [sendSynchronousRequest: returnedResponse: error:] 代码连接服务器,但证书未经验证,导致出现错误。我已经读过 How to use NSU
我正在使用 NSURLConnection 通过 GET 请求与服务器连接。要登录,我将发送带有表单 url 的 GET 请求 http://:@my.serverurl.com/user/login
我正在将图像上传到我的服务器,当我上传图像时,我试图向用户显示上传进度条。但在 NSURLConnection 委托(delegate)方法 连接中: didSendBodyData:totalByt
这是另一个简单的问题,我在 Google 上搜索了一个小时后却找不到答案... 用户正在文本字段中输入内容,当该字段失去焦点时,我启动 NSURLConnection.... NSString *us
我正在尝试验证连接是否成功,但得到的结果不稳定。当我尝试使用虚假网址执行同步请求时: NSData *responseData = [NSURLConnection sendSynchronousRe
我正在将图像加载到 iPhone 上的图库中,但遇到了问题。显然,当尝试从互联网下载图像时,脚本中的某些内容对文件名中的空格不满意。 这是连接线。 NSURLConnection *conn = [[
我有一个 NSURLConnection,每次调用 -(void)viewWillAppear:animated 时都会调用它(仅用于测试) 我就是这样做的 receivedData = [[NSMu
在 NSURLConnection 上调用实例方法 cancel 通常根本不会取消连接。 我正在 NSOperation 中执行异步 NSURLConnection。如果取消操作,则通过调用 NSUR
当我允许加载完成时,我有一个 NSURLConnection 工作正常。但是如果用户点击后退按钮,意味着 webview 将消失,我想取消正在进行的 NSURLConnection。但是,如果在调用
我的客户端应用程序中有一个使用 NSURLConnection 的小错误。我已经追踪到一个意外的连接保持事件,这似乎使网络服务器感到困惑(可能是服务器端的错误)。解决方法是在某个时刻强制关闭所有未完成
我是一名优秀的程序员,十分优秀!