下面我有一些代码应该返回一个数组,来自服务器的响应发生在一个块中:
- (NSMutableArray *)getArray
{
NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys:
@"pending", @"command",
@"2" , @"userID",
nil];
[[API sharedInstance] commandWithParams:params
onCompletion:^(NSDictionary *json) {
//result returned
if ([json objectForKey:@"error"]==nil) {
NSMutableArray *res = [[NSMutableArray alloc] init];
[res addObject:@"1234"];
RETURN HERE
} else {
//error
[UIAlertView title:@"Error" withMessage:[json objectForKey:@"error"]];
}
}];
}
解析数据并创建数组后,我想返回我为getArray
方法调用创建的数组。到目前为止,经过几个小时的尝试,我没有任何运气,即使尝试了之前关于stackoverflow的问题的一些建议。任何帮助将不胜感激。
答案 0 :(得分:3)
将块作为参数传递给函数
- (NSMutableArray *)getArray:(void (^)(NSArray *))block {}
然后用block(res);
答案 1 :(得分:1)
我会在课堂的某个地方创建一个方法,让我们说- (void)arrayFetched:(NSArray *)fetchedArray
。
然后你修改你的代码:
//...
if ([json objectForKey:@"error"]==nil) {
__weak NSMutableArray *res = [[NSMutableArray alloc] init];
[res addObject:@"1234"];
dispatch_async(dispatch_get_main_queue(), ^{
[self arrayFetched:[res copy]];
});
//...
然后希望你想要使用arrayFetched:
方法中的数组。