【问题标题】:Collecting data from NSURLConnection从 NSURLConnection 收集数据
【发布时间】:2012-09-03 13:30:40
【问题描述】:

我有最差的互联网连接 atm,如果之前有人问过这个问题,很抱歉..

我有一个 NSURLConnection 用于获取一些 json 数据。到目前为止,使用委托方法 didReceiveData:(NSData*)data 保存接收到的数据非常有效。我同时从至少七个不同的页面下载数据。今天,在更新 json 页面以包含更多数据后,NSData 对象似乎已损坏。最近有人告诉我,这个委托不会返回全部数据,因此会破坏我的信息。

是否有另一个像 didFinish 这样的委托,它也返回完整的对象?还是我必须自己做,比如合并两个 NSData?

抱歉愚蠢,语法错误专用于 iPhone 自动更正。

【问题讨论】:

    标签: ios cocoa-touch nsurlconnection nsdata


    【解决方案1】:

    您必须永远、永远依赖 didReceiveData:返回完整数据,因为它有一天中断。您必须在 NSMutableData 中收集数据块:

    NSMutableData *d = [[NSMutableData alloc] init];
    
    - (void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data
    {
        [d appendData:data];
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)conn
    {
        // 'd' now contains the entire data
    }
    

    如果对您不方便,您可以避免使用 NSURLConnection 并使用后台线程来获取一块数据:

    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://web.service/response.json"]];
    

    【讨论】:

    • 谢谢!正是我需要的:)
    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多