iOS AFJSONRequestOperation 返回空结果

Posted

技术标签:

【中文标题】iOS AFJSONRequestOperation 返回空结果【英文标题】:iOS AFJSONRequestOperation returns empty results 【发布时间】:2013-12-27 10:53:00 【问题描述】:

我正在尝试使用 AFJSONRequestOperation 从 JSON 请求中检索数据。 成功后,我能够成功检索数据,但无法完成请求并进一步转发数据以进行处理。

以下是我的代码

-(void) retrieveBrandList:(void (^)(NSArray *brandList))success failure:(void (^)(NSError *error))failure

    //__block NSArray *brandList =[[NSArray alloc] init];

    NSString *BrandListURL= http://127.0.0.1:8888/know/rest/brand
    NSURLRequest *request = [NSURLRequest requestWithURL:url];


    NSLog(@"Brand List URL = %@", BrandListURL);

    AFJSONRequestOperation *operation =[AFJSONRequestOperation
                                        JSONRequestOperationWithRequest: request
                                        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject)
                                        
                                            NSLog(@"%@", responseObject);
                                            brandList = [self successBandList:responseObject]; // parsing the JSON response in separate method (success block code)
                                            if (success)
                                                success(brandList);
                                        

                                        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseObject)
                                        
                                        message:[NSString stringWithFormat:@"%@",error];
                                            if (failure)
                                                failure(error);
                                        ];

    [operation start];
    [operation waitUntilFinished];


以下是检索数据的数据管理器。

- (NSArray *)getBrandList

    @try
    

       [brand retrieveBrandList:^(NSArray *brandList)
        
        brands = brandList;
        
        failure:^(NSError *error) 
        ];

        NSLog(@"Retriving Brand list completed");
        return brands;
    

    @catch (NSException * e) 
        NSLog(@"Exception: %@ , Error while getting the brand list", e);
    

    return NULL;


我如何完成操作并使用或存储结果以供其他方法进一步处理?

【问题讨论】:

【参考方案1】:
id jsonObject = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
        if ([jsonObject isKindOfClass:[NSDictionary class]]) 
            self.jsonDictionary = jsonObject;
        

你也可以检查其他选项,但这对我有用

【讨论】:

我正在尝试创建一个没有任何 GUI 的框架。我要做的就是将结果存储在某个变量中并完成程序执行 是的,所以你不能用这个做什么 解析 Json 工作正常。我在返回数据时遇到问题。因为 AFJSONRequestOperation 的异步方法。此操作返回空结果 你检查过 Charlse 的回复吗? 能否请您提供 Charlse 的链接?

以上是关于iOS AFJSONRequestOperation 返回空结果的主要内容,如果未能解决你的问题,请参考以下文章

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别