我的游戏需要从服务器数据库中填充一堆东西来填充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>
就像接待被打断了一样。有谁知道这里发生了什么?谢谢!
答案 0 :(得分:2)
您没有使用所有响应数据;正如NSURLConnectionDelegate
reference中提到的那样:
新提供的数据。委托应该连接内容 传递的每个数据对象,以构建URL的完整数据 负荷。
所以你需要创建一个NSData
实例变量;在请求之前清除并在新数据到达时附加到请求。然后使用didFinishLoading
委托方法通过完整响应触发对propertyListFromData
的调用。