导致NSURLConnection在完成之前停止接收的原因是什么?

时间:2013-02-08 13:54:06

标签: ios plist nsurlconnection

我的游戏需要从服务器数据库中填充一堆东西来填充tableView单元格。这一直很好。然后我将Xcode升级到4.6并针对iOS6.1,以取悦App Review团队人员。现在,我的一个连接永远不会完成。 (所有其他帖子似乎一如既往地正常工作。)这是我的帖子:

- (void) fillCells {
    Cell_QtoA *newCell = [[Cell_QtoA alloc] initCellUser:usrID Grp:grpID Qtn:0 Gnm:@"na" Cat:@"na" Sit:@"na" Pfl:@"na" Lks:0 isA:0 ddA:0 ];
    NSMutableURLRequest *reqPost = [SimplePost urlencodedRequestWithURL:[NSURL URLWithString:kFillCells] andDataDictionary:[newCell toDictC]];
    (void) [[NSURLConnection alloc] initWithRequest:reqPost delegate:self];
}

我认为它运作良好。 PHP和数据库没有改变。在升级之前,昨天一切都很好。这是我的连接方法:

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
   NSLog(@"data = %@", data);
   NSString  *error;
   NSArray *array = (NSArray *)[NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListImmutable format:0 errorDescription:&error];
   if( error ) {
       NSLog(@"Error = %@", error);
       return;
   }
   NSLog(@"1st object in array of %d is %@", [array count], array );
}

因为我怀疑网速是个问题,所以我在电话中添加了一个计时器,这是我以前从未需要的:

timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(fillCells) userInfo:nil repeats:YES];

计时器没有帮助。仍有错误:

"Unexpected EOF" and "Unexpected character z (or whatever) at Line 1"

NSLog数据显示截断的十六进制数据,如:

<3c3f786d 6c207665 ... 63743e0a 3c2f6172 7261793e 0a3c2f70 6c697374 3e>

就像接待被打断了一样。有谁知道这里发生了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

您没有使用所有响应数据;正如NSURLConnectionDelegate reference中提到的那样:

  

新提供的数据。委托应该连接内容   传递的每个数据对象,以构建URL的完整数据   负荷。

所以你需要创建一个NSData实例变量;在请求之前清除并在新数据到达时附加到请求。然后使用didFinishLoading委托方法通过完整响应触发对propertyListFromData的调用。