错误域= NSCocoaErrorDomain代码= 3840“操作无法完成。(可可错误3840.)

时间:2014-04-18 05:26:58

标签: ios objective-c nsmutableurlrequest

我从网址请求动态json字符串。

-(void)getDataFromServer{

 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.domain.com/json/"]];

[request setHTTPMethod:@"GET"];
[request addValue:@"getValues" forHTTPHeaderField:@"METHOD"]; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}



-(void)requestReturnedData:(NSData *)data{ //activated when data is returned

 NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:data];

}

我得到了以下错误。

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa  error 3840.)(JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x977a900 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

我已经使用json文本文件

进行了测试
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.domain.com/jsonfile.json"]];

完美无缺。我怎样才能克服这个问题。

编辑---

我发现,如果json中的行数超过200,则会发生此错误。否则它运行得很好。是否存在数据大小问题。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,并为我的代码找到了解决方案。当连接返回大数据方法" didReceiveData"收到大量数据后会拨打很多时间。我们必须将此方法的数据附加到解析器类的.h文件中声明的NSData引用。并且应该调用方法" dictionaryWithJSONData"在NSURLConnection" connectionDidFinishLoading"的委托方法中。

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

[self.dataJSON appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:dataJSON];
}

这里dataJSON在.h文件中声明并在init方法中分配。