

日本語版のDBpediaのサイトから情報を取り出すために、API取得URLを書いています。

例えば、地球温暖化に関するWikipediaのページから関連する文字列（例：温室効果ガス）を取得したら、再度その関連する文字列についてクエリでの検索を行い、関連する文字列（温室効果ガスに関連する文字列）を取得する、またその関連する文字列についてクエリでの検索を行い、、、という繰り返し処理を行い、階層関係を考慮して配列に格納していきたいのです。

しかしながら、それがうまく実装することができません。。。  
なんでも良いのでアドバイス、よろしくお願いいたします！！！

↓現在困っているのが、以下のプログラムの行のあたりで、

[code]

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
    
[/code]

なぜか5回分のループを行いたいのに0からカウントを始めたいのに、いきなり３階層目，４階層目，と数字が飛んでカウントされてしまいます。

↓作成中のプログラム

[code]

    __block NSString *topic = @"地球温暖化";
    for(int layerNum=0; layerNum<5; layerNum++) {
    
        NSLog(@"%d回目の探索", layerNum+1);
    
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        manager.responseSerializer = [AFJSONResponseSerializer serializer];
        [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"sparql-results+json", @"text/json", @"text/html", @"text/xml", nil]];
        //NSLog(@"%d--------------", layerNum);
        //通信成功時の処理
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
            //NSLog(@"Response : %@", [operation responseString]);
            NSLog(@"----------------------------%d階層目　はじまり", layerNum+1);//なぞ
    
            NSData *json = responseObject;
            NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingAllowFragments error:nil];
            //NSLog(@"output array : %@", [jsonDic description]);
            NSArray *bindings = [jsonDic st_arrayForPath:@"results.bindings"];
    
    
            NSLog(@"探索topic : %@", topic);
    
            NSMutableArray *mArray1 = [NSMutableArray array];
    
            [allValuesArray enumerateObjectsUsingBlock:^(NSString *valueString, NSUInteger idx, BOOL *stop) {
                NSLog(@"%lu: %@", (unsigned long)idx, valueString);//数字：値　がずらーっと出力される
                //ある層で選定キーワードが見つかった数mだけ配列をm個生成させる
    
                for (int j=0; j<[shouldLearnKeywords count]; j++) {
    
                    if([valueString caseInsensitiveCompare:shouldLearnKeywords[j]] == NSOrderedSame){
                        NSLog(@"　同じのが見つかった： %d.%@", j, valueString);//選定キーワードが配列allValuesArrayから見つかったらはく
                        [mArray1 addObject:shouldLearnKeywords[j]];
                    }
                }
    
            }];
            //取り出したキーワード
            NSInteger size = [mArray1 count];
            NSLog(@"取り出されたキーワードの数：%ld", size);
            for(int j=0; j<[mArray1 count]; j++){
                NSLog(@"%d階層 探索候補：%d　%@", layerNum+1, j,mArray1[j]);
            }
    
            //取り出されたキーワードを選定した配列から削除
            [shouldLearnKeywords removeObjectsInArray:mArray1];
            NSInteger size1 = [shouldLearnKeywords count];
            NSLog(@"のこりのキーワードの数：%ld", size1);
            for(int j=0; j<[shouldLearnKeywords count]; j++){
                NSLog(@"残りのキーワード：%@",shouldLearnKeywords[j]);
            }
    
            NSLog(@"----------------------------%d階層目　おわり", layerNum+1);//なぞ
            //topic変更
            topic = shouldLearnKeywords[0];
            NSLog(@"topic : %@", topic);
    
            //通信失敗時の処理
        }failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Response %@", [operation responseString]);
            NSLog(@"Error : %@", error);
        }];
        [operation start];
    
    }
    
[/code]


CC BY-SA 3.0
2015-10-08T19:33:31.183
17436
2015-10-13T06:31:23.227
2015-10-13T06:31:23.227
5053
5053
question
ios objective-c xcode
AFNetwrokingを使用してHTTP通信を繰り返し行い、JSONデータを取り出したい