Ios4 iOS-使用多个连接

Ios4 iOS-使用多个连接,ios4,Ios4,我有一个简单的登录视图,当您成功登录时,它会从服务器获取一些json并将其插入数据库。因此,我使用: // NSURLRequest - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { // appending data } - (void) connectionDidFinishLoading:(NSURLConnection *)connection { //

我有一个简单的登录视图,当您成功登录时,它会从服务器获取一些json并将其插入数据库。因此,我使用:

// NSURLRequest 

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // appending data
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    // insert into db
}

我现在需要第二个连接来下载一些文档,我如何利用上面的方法为同一视图中的第二个NSURLRequest传递另一个URL并以不同的方式(而不是json)处理数据?

好的,您需要做的第一件事是再次将新的
NSURLConnection
委托设置到此类,因此这些方法被调用(但您知道这一点)。如果一次只执行这些操作,请存储指向活动的
NSURLRequest
的指针,类似于:

@property (nonatomic, assign) NSURLRequest *activeURLRequest;
然后检查活动请求的URL以区分请求:

- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *urlPath = [[activeURLRequest URL] path];
    if([urlPath isEqualToString:@"http://my.url.string/1"])
        // insert into DB
    else if([urlPath isEqualToString:@"http://my.url.string/2"])
        // do the other thing
}
注意:您还可以使用
isEqual:
(或
=
操作符)将
NSURL
对象直接与存储版本进行比较


如果你一次要做不止一件事,你需要另一种方法来区分。我建议使用或使其更简单,但如果您想使用Apple的库来实现这一点,那么您需要分离多个线程,记录哪个线程号正在处理哪个请求URL,并在您的
connectiondFinishLoading:
方法中使用该信息。

我明白您的意思,我将发挥这个积极的URL想法,并根据URL处理信息。我不想使用AsitpRequest(这很好),但我认为它不再被支持了?i、 例如,没有IOS5更新。干杯。我同意ASIHTTPRequest不再受支持,但这并不意味着它已经坏了。它对我来说仍然非常有效,有很多finnicky线程安全编码,这些编码经过多年的改进。这也是将特定请求缓存在磁盘上的自定义位置(我见过)的最简单方法,而且它可以很好地处理HTTP重定向。ASIHTTPRequest for iOS5有什么问题吗?我记得我做了一个构建,它抛出了我不知道的可怕警告。我正在应用商店中的一个兼容iOS5的应用程序中使用它。它用于检索(和缓存)XML请求,并用作下载管理器/存储框架。没有问题。当然,我没有使用
ARC
;如果你启用了它,它需要重新修改一点。我需要再看一次。我不确定弧是什么,所以我得检查一下。我只需要它能够异步下载json和文件,所以如果AsittpRequest能帮我的话,苹果的库可能会变得复杂。