Error Domain = NSCocoaErrorDomain Code=3840 "操作无法完成。(Cocoa 错误 3840。)

Posted

技术标签:

【中文标题】Error Domain = NSCocoaErrorDomain Code=3840 "操作无法完成。(Cocoa 错误 3840。)【英文标题】:Error Domain = NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.) 【发布时间】:2014-04-18 05:26:57 【问题描述】:

我正在从 web url 请求动态 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,则会发生此错误。否则它运行完美。数据大小是否有问题。

【问题讨论】:

***.com/questions/14171111/… 你的 JSON 是什么样的?您很可能收到一个字符串,或者***对象是一个数组。 @Inertiatic ***对象是一个数组。 【参考方案1】:

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

- (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方法中分配。

【讨论】:

以上是关于Error Domain = NSCocoaErrorDomain Code=3840 "操作无法完成。(Cocoa 错误 3840。)的主要内容,如果未能解决你的问题,请参考以下文章

Error Domain=HMErrorDomain Code=4 "操作无法完成。(HMErrorDomain error 4.)"

解析大型 XML 文件失败--ERROR:Error Domain=DDXMLErrorDomain Code=1 "(null)"

checkResourceIsReachableAndReturnError 总是返回 Domain=NSCocoaErrorDomain Code=4 "操作无法完成。(Cocoa 错误

iOSError: Error Domain=PBErrorDomain Code=7 "Cannot connect to pasteboard server

AFNetworking 文件下载错误 Error Domain=NSCocoaErrorDomain Code=260

ios奇葩问题 Error Domain=NSURLErrorDomain Code=-1003