私はココアのObjective-cの初心者ですので、些細な質問をお許しください。
私は現在、NSJSONSerializationを介していくつかのデータをフェッチし、さらなる作業のために保存するXCODEプロジェクトに取り組んでいます。
このステップでは、データのフェッチの進行状況を、必要なパラメーター(フェッチ元のURLと配列に解析する必要のあるレイヤー)のセッターを持つクラスにカプセル化します。このプロシージャを使用するには、このクラス内にメソッドを作成します。このメソッドは、接続と要求を作成し、データを含む配列を返します。いくつかのテストの後、私はこのクラスのインスタンスを作成しようとし、データのフェッチを開始するメソッドを呼び出しました。
私の問題は、新しいインスタンス「block_stats」からメソッドdata_arrayを呼び出して、同じタイプの配列にデータを格納した後、配列が空になることです。
table_data = [block_stats data_array];
この動作の理由は、(didReceiveResponse、didReceiveData、connectionDidFinishLoading)のメソッドの使用が非同期で機能しており、ダウンロードが完了する前にdata_arrayの戻りが行われたためです。
ダウンロード部分を含むクラス内のメソッド:
- (NSMutableArray *)data_array
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    if(data_array)
    {
        [data_array removeAllObjects];
    } else {
        data_array = [[NSMutableArray alloc] init];
    }
    NSURLRequest *request = [NSURLRequest requestWithURL:data_url];
    connection = [NSURLConnection connectionWithRequest:request delegate:self];
    if(connection)
    {
        webdata = [[NSMutableData alloc]init];
    }
    return data_array;    
}
インスタンスを作成し、メソッドを呼び出してデータをフェッチする別のビューのIBAction
- (IBAction)refresh:(UIBarButtonItem *)sender {
    KDJSONparser *block_stats = [[KDJSONparser alloc]init];
    [block_stats setURL:[NSURL URLWithString:@"*JSONDATA_URL*"]];
    [block_stats setLayer:@"blocks"];
    table_data = [block_stats data_array];
}
誰かアドバイスをいただければ幸いです。できるだけ理解しやすいといいですね。前もって感謝します!