I'm moving my app code to an MVC model and so I created a method to retrieve some data from an API.
+ (NSMutableArray *)loadFromFeed {
NSString *feed = @"https://api.test.com";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:feedUrl]];
request = [mutableRequest copy];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [JSONResponseSerializerWithData serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *jsonArray = (NSArray *)[responseObject objectForKey:@"items"];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
CLS_LOG(@"Error");
}];
}
Now, ideally, I'd like to return jsonArray
as part of this method. However, since AFHTTPRequestOperation
is asynchronous, I don't know how to solve this and still be able to call [Data loadFromFeed];
anywhere in the app. How can I do this?
You could pass two block named success and failure to
loadFromFeed
, and then call the two block from yoursetCompletionBlockWithSuccess
success and failure block, passing jsonArray to the success block:then use in this way: