1

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

- (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>

这就像接收被中断。有人知道这里发生了什么吗?谢谢!

4

1 回答 1

2

您没有使用所有响应数据;如NSURLConnectionDelegate 参考文献中所述:

新可用的数据。委托应连接交付的每个数据对象的内容,以构建 URL 加载的完整数据。

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

于 2013-02-08T14:33:12.407 回答