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

写了一个方法需要返回值,但是需要返回的值在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外输出数据?

大家讲道理
大家讲道理

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

membalas semua(1)
巴扎黑

Bukan mudah untuk kembali semula ke sini anda tidak segerak, jadi anda boleh menyekat kembali secara tidak segerak. Sebagai contoh, ia boleh ditukar kepada ini.

- (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);
        }
    }];
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan