1

このコードには JSON がありますが、何をしても、この JSON をインスタンス変数に渡す方法がわかりません。それを変数に設定し、このメソッドの外でその変数を呼び出すたびに、nil になります。したがって、私が収集できるのは、次の非同期呼び出しが戻る前に変数が呼び出されるということです。

問題は、JSON 値を抽出できるように、次のコードに何ができるかということです。インターネットのどこかで、完了時にコールバックとしてサーバーに送信されるブロックを渡す必要があることを読みましたが、次のコードでそれを行う方法がわかりません

 //Gets the JSON object that contains the entries from the server
 -(void)getEntriesFromServer 
 {
   NSLog(@"%s", __PRETTY_FUNCTION__);

   [[appAPIClient sharedClient] getPath:@"/entries"
                          parameters:nil
                             success:^(AFHTTPRequestOperation *operation, id JSON)
    {
      NSLog(@" JSON array = %@",[JSON valueForKeyPath:@"entries"]);
    }failure:^(AFHTTPRequestOperation *operation, NSError *error)
    {
      NSLog(@" Json not received");
    }];
  }

ありがとう

4

1 に答える 1

1

__blockたとえば、配列の定義に追加する__block NSArray* entriesArray; か、次のようなプロパティを作成してみてください

@property (nonatomic, retain) NSArray* entriesArray;

このようにコードを変更します

[[appAPIClient sharedClient] getPath:@"/entries"
                               parameters:nil
                                  success:^(AFHTTPRequestOperation *operation, id JSON)
   {

     //NSLog(@" Json value received is : %@ ",[JSON description]);
     //NSLog(@" JSON array = %@",[JSON valueForKeyPath:@"entries"]);

     self.entriesArray = [NSArray arrayWithArray:[JSON valueForKeyPath:@"entries"]];
     NSLog(@" JSON array from inside block = %@", _entriesArray);
     }failure:^(AFHTTPRequestOperation *operation, NSError *error)
    {
        NSLog(@" Json not received");
    }];

それが役立つことを願っています

于 2013-01-25T06:58:31.177 に答える