首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS: TouchJSON &检索到的数据大小

iOS: TouchJSON &检索到的数据大小
EN

Stack Overflow用户
提问于 2010-11-20 02:29:12
回答 1查看 617关注 0票数 1

当我使用touchJSON请求JSON数据时,我想显示一个指示接收到的数据量的UIProgressView。我想知道是否有一种方法可以监听正在接收的数据的大小。

我使用以下内容请求数据:

代码语言:javascript
复制
- (NSDictionary *)requestData
{   
    NSData          *data       =   [NSData dataWithContentsOfURL:[NSURL URLWithString:apiURL]];
    NSError         *error      =   nil;
    NSDictionary    *result     =   [[CJSONDeserializer deserializer] deserializeAsDictionary:data error:&error];

    if(error != NULL)
        NSLog(@"Error: %@", error);

    return result;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-20 03:05:03

您将不得不引入更多的代码来包含下载状态指示器栏。此时,您可以使用[NSData dataWithConentsOfURL:...]下载数据。相反,您将创建一个使用NSURLConnection对象下载数据的类,在MSMutableData对象中累积该数据,并相应地更新您的UI。您应该能够使用ContentLength header和- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;更新来确定下载的状态。

以下是一些相关的方法:

代码语言:javascript
复制
- (void) startDownload
{
    downloadedData = [[NSMutableData alloc] init];
    connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}

- (void)connection:(NSURLConnection *)c didReceiveResponse:(NSURLResponse *)response
{
    totalBytes = [response expectedContentLength];
}

// assume you have an NSMutableData instance variable named downloadedData
- (void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data
{
    [downloadedData appendData: data];
    float proportionSoFar = (float)[downloadedData length] / (float)totalBytes;
    // update UI with proportionSoFar
}

 - (void)connection:(NSURLConnection *)c didFailWithError:(NSError *)error
{
    [connection release];
    connection = nil;
    // handle failure
}

- (void)connectionDidFinishLoading:(NSURLConnection *)c
{
    [connection release];
    connection = nil;
    // handle data upon success
}

就我个人而言,我认为最简单的方法是创建一个实现上述方法的类,以执行通用数据下载并与该类进行接口。

这应该足以让你得到你需要的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4228181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档