1

此代码具有 JSON,但无论我做什么,我都无法弄清楚如何将此 JSON 传递给实例变量。每次我将它设置为一个变量并在此方法之外调用该变量时它为零。所以我可以收集到的是在以下异步调用返回之前调用了该变量。

所以问题是我可以对下面的代码做些什么,以便我可以提取 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 回答