ios - 如何在外面取得AFNetworking的block里的数据
大家讲道理
大家讲道理 2017-04-17 17:58:00
0
1
398

写了一个方法需要返回值,但是需要返回的值在afnetworking的block回调里,

- (NSString *)correctShiftWithLongitude:(NSString *)lat latitude:(NSString *)lon { NSDictionary *params = @{ @"lon" : lon, // 原始经度 @"lat" : lat, // 原始纬度 }; __block NSString *longitude; // __block不管用,静态变量也不管用 [self.manager POST:URL parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { NSDictionary *locDictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; longitude = [locDictionary objectForKey:@"lon"]; // 纠正后经度 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@", error); }]; NSLog(@"%@", longitude); // longitude一直为空,请问如何在AFN的block回调里修改外部数据,或者说如何在block外输出数据? // 返回值一直为空 return longitude; }

代码如上,longitude一直为空,请问如何取得AFN的block里的数据,或者说如何在AFN的block外输出数据?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all (1)
巴扎黑

You can't just return directly. You are asynchronous, so you can block asynchronously and go back. For example, it can be changed to this.

- (void)correctShiftWithLongitude:(NSString *)lat latitude:(NSString *)lon finishBlock:(void(^)(NSString *longitude, NSError *error))finishBlock { NSDictionary *params = @{ @"lon" : lon, // 原始经度 @"lat" : lat, // 原始纬度 }; __block NSString *longitude; // __block不管用,静态变量也不管用 [self.manager POST:URL parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { NSDictionary *locDictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; longitude = [locDictionary objectForKey:@"lon"]; // 纠正后经度 if (finishBlock) { finishBlock(longitude, nil); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@", error); if (finishBlock) { finishBlock(nil, error); } }]; }
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!