Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在我的服务完成之前,会通知ConnectiondFinishLoading_Ios_Uitableview - Fatal编程技术网

Ios 在我的服务完成之前,会通知ConnectiondFinishLoading

Ios 在我的服务完成之前,会通知ConnectiondFinishLoading,ios,uitableview,Ios,Uitableview,我有从服务返回的数据,该服务多次提供给UITableView。我将填充我的表的代码放置在ConnectiondFinishLoading委托中。这是该代码的正确位置吗 我有一个NSMutableData*接收数据;在.m文件的顶部,我已经实现了正确的委托并重写了正确的方法 我只是想知道我在这里遗漏了什么,或者我可以做些什么,在表视图中只查看一次JSON中的数据 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(

我有从服务返回的数据,该服务多次提供给UITableView。我将填充我的表的代码放置在ConnectiondFinishLoading委托中。这是该代码的正确位置吗

我有一个NSMutableData*接收数据;在.m文件的顶部,我已经实现了正确的委托并重写了正确的方法

我只是想知道我在这里遗漏了什么,或者我可以做些什么,在表视图中只查看一次JSON中的数据

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {    
[receivedData setLength:0];
NSLog(@"%@",response);}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"Succeeded! Received %d bytes of data",[data length]);
receivedData = [[NSMutableData alloc] init];
[receivedData appendData:data];}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
NSError *error = nil;
// Get the JSON data from the website
id result = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error];

if ([result isKindOfClass:[NSArray class]]) {

    for (NSArray *item in result) {
        NSArray *category = [item valueForKey:@"CategoryName"];
        [dataArray addObject:category];
    }
}
else {
    NSDictionary *jsonDictionary = (NSDictionary *)result;

    for(NSDictionary *item in jsonDictionary)
        NSLog(@"Item: %@", item);
}

[self.tableView reloadData];

NSLog(@"Finished");}

我相信你有一个错误

receivedData = [[NSMutableData alloc] init];
每次收到数据时,都会再次初始化对象


我建议您在JSON部分使用此页面。

我相信您有一行错误代码

receivedData = [[NSMutableData alloc] init];
每次收到数据时,都会再次初始化对象


我建议您在JSON部分使用此页面。

您可以显示声明receivedData的@interface部分吗?并且,您可以更具体地说明没有发生什么,或者您看到的特定错误。1)作为一个次要问题,didReceiveData:可能会被调用多次,因此您不应该每次都在其中分配receivedData。2) 至于剩下的问题,你的问题是混乱和矛盾的-标题说ConnectiondFinishLoading在服务完成之前被通知,这意味着你没有得到所有的数据,但在你的描述中你说“只看到数据一次”,这意味着你得到的次数比你预期的要多。如果你感到困惑,我们也会被这种描述所迷惑。3) 在ConnectionIDFinishLoading中处理数据是正确的位置Hi Martin,感谢您的回复。DidReceiveData在上面代码列表顶部的代码中实现。这在我的.m文件中。我觉得在接收所有数据之前调用ConnectiondFinishLoading的原因是,我实际上是在这里迭代我放置在NSMutableArray中的数据,我称之为receivedData,我看到了我的数组,其中包含9个项,平均大约6次。因此,我的UITableView总共有大约45条记录。我得到了我期望的所有数据,但我看到didReceiveData被触发了多次。如果我在connectionDidFinishLoading上放置断点并运行应用程序,我可以看到该方法被反复调用。这时我看到我的表视图附加了一组新的九个值。这是我希望从WebAPI调用中接收到的九个值。您能否显示声明receivedData的@interface部分?并且,您能否更具体地说明未发生的情况,或者您看到的一个特定错误。1)作为一个次要问题,didReceiveData:可能会被调用多次,因此您不应该每次都在其中分配receivedData。2) 至于剩下的问题,你的问题是混乱和矛盾的-标题说ConnectiondFinishLoading在服务完成之前被通知,这意味着你没有得到所有的数据,但在你的描述中你说“只看到数据一次”,这意味着你得到的次数比你预期的要多。如果你感到困惑,我们也会被这种描述所迷惑。3) 在ConnectionIDFinishLoading中处理数据是正确的位置Hi Martin,感谢您的回复。DidReceiveData在上面代码列表顶部的代码中实现。这在我的.m文件中。我觉得在接收所有数据之前调用ConnectiondFinishLoading的原因是,我实际上是在这里迭代我放置在NSMutableArray中的数据,我称之为receivedData,我看到了我的数组,其中包含9个项,平均大约6次。因此,我的UITableView总共有大约45条记录。我得到了我期望的所有数据,但我看到didReceiveData被触发了多次。如果我在connectionDidFinishLoading上放置断点并运行应用程序,我可以看到该方法被反复调用。这时我看到我的表视图附加了一组新的九个值。这是我希望从WebAPI调用中收到的九个值。