此代码具有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");
}];
}
由于
答案 0 :(得分: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");
}];
希望它会有所帮助