首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SBJson和NSData

SBJson和NSData
EN

Stack Overflow用户
提问于 2011-07-16 05:13:10
回答 1查看 2.8K关注 0票数 0

我正在从quizlet.com获取数据,对于简单的代码,它工作得很好:

代码语言:javascript
复制
-(void) grabbQuizletWithUrl:(NSURL*)requstURL {

     NSString *dataString = [NSString stringWithContentsOfURL:requestURL encoding:NSUTF8StringEncoding error:&error]; 

     NSDictionary *dict = [dataString JSONValue];
}

但是我需要使用NSURLConnection来启动和停止活动指示器。我在努力

代码语言:javascript
复制
-(void) grabbQuizletWithUrl:(NSURL*)requstURL {

    NSURLRequest *quizletRequest = [[NSURLRequest alloc] initWithURL:requestURL];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:quizletRequest
                                                          delegate:self];
    [connection release];
    [quizletRequest release];

}

// and getting data in delegate method:



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

    [self.activityIndicator stopAnimating];

    NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSDictionary *dict = [dataString JSONValue];

}

我收到了这样的消息:

2377:707 -JSONValue失败。错误是:意外的输入结束

2377:707 -JSONValue失败。错误是:令牌的开始非法。

2377:707 -JSONValue失败。错误是:标记%d的开始非法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-16 05:27:02

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;中,您应该只将接收到的数据附加到先前存储的数据中,因为您只获得了响应的一部分,即:

代码语言:javascript
复制
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // someNSMutableDataIVar is an ivar to store the data in
    [someNSMutableDataIVar appendData:data];
}

然后,在另一个名为- (void)connectionDidFinishLoading:(NSURLConnection *)connection;的委托方法中,您应该处理数据。

代码语言:javascript
复制
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // the connection finished loading all data, process...
    [self.activityIndicator stopAnimating];
    NSString *dataString = [[NSString alloc] 
                            initWithData:someNSMutableDataIVar
                                encoding:NSUTF8StringEncoding];
    NSDictionary *dict = [dataString JSONValue];
}

苹果公司的URL Loading System Programming Guide中详细描述了异步网址加载系统。

希望这能有所帮助!

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

https://stackoverflow.com/questions/6713199

复制
相关文章

相似问题

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