我写了一个函数从URL中获取NSDictionary
。异步函数不返回数据
[Data loadFromAPI:@"http://example.com/api" withSuccess:^(id data) {
NSMutableDictionary *result = (NSDictionary *)data;
CLS_LOG(@"result: %@", result);
} failure:^(NSError *error) {
CLS_LOG(@"Error: %@", error);
}];
它会调用该函数是下面的一个:
typedef void (^Success)(id data);
typedef void (^Failure)(NSError *error);
+ (void)loadFromAPI:(NSString *)apiURL withSuccess:(Success)success failure:(Failure)failure {
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:apiURL]];
NSMutableURLRequest *mutableRequest = [request mutableCopy];
request = [mutableRequest copy];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [JSONResponseSerializerWithData serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *jsonArray = (NSArray *)responseObject ;
NSDictionary *result = [NSDictionary dictionaryWithObjectsAndKeys:
[self now], @"time",
jsonArray, @"response",
nil];
CLS_LOG(@"Result is: %@", result);
success(result);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure?failure(error):nil;
}];
[operationQueue setMaxConcurrentOperationCount:1];
[operationQueue addOperations:@[operation] waitUntilFinished:NO];
}
CLS_LOG(@"Result is: %@", result);
返回返回的数据在函数内部。但是,我所称的功能CLS_LOG(@"result: %@", result);
返回null
。我究竟做错了什么?
为什么你要在这行中为'NSMutableDictionary'分配一个'NSDictionary':'NSMutableDictionary * result =(NSDictionary *)data;' – johnpatrickmorgan
[self now]?哪里是? – 0yeoj